Ошибка с преобразованием строки в число

351
11 июля 2017, 19:44
private char whatThing() {
    double random = Math.random();
    String f = String.format("%.2f", random);
    double formattedRandom = Double.parseDouble(f);
    if(formattedRandom < 0.33) {
        return 'R';
    } else if(formattedRandom >= 0.33 && formattedRandom < 0.66) {
        return 'P';
    } else {
        return 'S';
    }
}

Выводит ошибку NumberFormatException:

Exception in thread "main" java.lang.NumberFormatException: For input string: "0,47" at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) at sun.misc.FloatingDecimal.parseDouble(Unknown Source) at java.lang.Double.parseDouble(Unknown Source) at RPSEngine.whatThing(RPSEngine.java:28) at RPSEngine.(RPSEngine.java:8) at RPSSheath.(RPSSheath.java:30) at RPSSheath.main(RPSSheath.java:43)

Answer 1

Чтобы получить число с точностью до двух цифр после запятой, нужно указать следующее выражение:

%1$,.2f

Таким образом код будет выглядеть так:

double number = Math.random();
String str = String.format("%1$,.2f", number);
System.out.println(number);
System.out.println(str);

0.3086820994984767
0.31

Answer 2

Вот такой вариант делает тоже самое, но проще

private char whatThing() {
    final Random random = new Random();
    int choice = random.nextInt(2);
    switch (choice) {
        case 0:
            return 'R';
        case 1:
            return 'P';
        default:
            return 'S';
    }
}
READ ALSO
java robot.mousePress(InputEvent.BUTTON3_MASK); не нажимается правая кнопка

java robot.mousePress(InputEvent.BUTTON3_MASK); не нажимается правая кнопка

Такая проблема, не знаю в чем сольДля теста, в программе надо сделать имитацию нажатия правой кнопки мыши, чтобы перейти в определенную форму

223
Что то не так Java

Что то не так Java

Делаю приложение под Андроид в Android StudioТребуется чтоб приложение узнала дату и месяц у устройства,а после этого в зависимости от даты загрузить...

206
Парсер командной строки cmd.exe с помощью java

Парсер командной строки cmd.exe с помощью java

Имеется программа - исполняемый файлexe, которая выполняется на Windows

339
TextField передача

TextField передача

Есть 3 файла

283