Почему не считывает double переменные с консоли?

330
05 августа 2017, 03:16

С консоли нужно считать переменную типа double, затем умножить ее на 6, округлить в меньшую сторону, результат поместить в переменную типа int и вывести ее увеличив на 1. Но когда попробовал сделать так :

import java.util.*;
public class Training {
    public static void main(String[] args) {
        Scanner read = new Scanner(System.in);
        int n = read.nextInt();
        double d;
        int c;
        for (int i = 0; i < n; i++) {
            d = read.nextDouble();
            c = (int) Math.floor(d * 6);
            System.out.print(c + 1 + " ");
        }
    }
}

Выходила ошибка:

Exception in thread "main" java.util.InputMismatchException  
at java.util.Scanner.throwFor(Scanner.java:864)  
at java.util.Scanner.next(Scanner.java:1485)  
at java.util.Scanner.nextDouble(Scanner.java:2413)  
at Training.main(Training.java:9)

Потом попробовал такой способ:

import java.util.*;
public class Training {
    public static void main(String[] args) {
        Scanner read = new Scanner(System.in);
        int n = read.nextInt();
        double d;
        int c;
        for (int i = 0; i < n; i++) {
            if (read.hasNextDouble()) {
                d = read.nextDouble();
                c = (int) Math.floor(d * 6);
                System.out.print(c + 1 + " ");
            }else{
                System.out.print(read.hasNextDouble()+" ");
            }
        }
    }
}

Но на выводе получал все false. Входные выглядят примерно так:
24
0.686441579368
0.938021477312
0.502164815553
0.751931000501
0.894581723958
0.417603249196
0.258755513933
0.887455070391
0.818552840035
0.186583039351
0.320293535013
0.449393435847
0.216721537057
0.529250661843
0.377481672913
0.441697923467
0.290121383499
0.121791416779
0.935049816035
0.912419347558
0.777843158692
0.23243222991
0.00152469752356
0.409032049123

Что не так?

Answer 1

InputMismatchException -- if the next token does not match the Float regular expression, or is out of range

То есть значит, что то-то не так с форматом чисел. Я посмотрел в онлайн компиляторе все работало. А в Intellij IDEA такая появляется из-за того, что стоят точки, а нужны запятые. С запятыми все работает.

READ ALSO
Android: выбор файла

Android: выбор файла

Нужно реализовать такую фишку: приложение просит выбрать в файлах изображение,с помощью установленных программ (например "Мои файлы"),чтобы...

286
Вылетает приложение при использовании setMyLocation

Вылетает приложение при использовании setMyLocation

Если использовать setMyLocationEnabled(true) и дать приложению разрешение на использование местоположения, то приложение просто вылетает при запуске

212
Как решить CommandAcceptanceException в интеграционном тесте?

Как решить CommandAcceptanceException в интеграционном тесте?

Есть DAO метод который я тестирую при помощи hsqldb

342
Консольный морской бой на java

Консольный морской бой на java

Здравствуйте, пишу примитивную версию морского боя на javaЗнаю, тема такая была, но из рассмотренных мною вариантов логику работы так и не понял,...

1027