java.lang.NumberFormatException: для входной строки: "-5,25" - PullRequest
0 голосов
/ 26 апреля 2018

Я получаю следующую ошибку:

java.lang.NumberFormatException: For input string

Это мой код:

private void setDepth(GL10 gl){
    float max = -5.25f;
    float min = -6.25f;
    float A = (max - min) / 2;
    float z;
    double temp = A * -Math.abs(Math.sin(2 * (round(angleRectangle) * pi / 180))) + max;
    String s = String.format("%.2f", temp).trim();
    z = Float.parseFloat(s);
    depth = z;
}

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018

Мне очень ясно, что бэкэнд ожидает число и это породило ошибку.

0 голосов
/ 26 апреля 2018

String.format("%.2f", temp) будет использовать текущую локаль системы. Процитирую метод Javadoc:

Всегда используется локаль, возвращаемая java.util.Locale # getDefault ()

Ваш код будет работать, если языковой стандарт по умолчанию - английский, что можно проверить с помощью перегруженной версии String.format():

String s = String.format(Locale.ENGLISH, "%.2f", temp).trim();
z = Float.parseFloat(s); // works, a dot is used for fractions separator

, но потерпит неудачу, если, например, немецкий язык установлен по умолчанию:

String s = String.format(Locale.GERMAN, "%.2f", temp).trim();
z = Float.parseFloat(s); // fails, a comma is used for fractions separator

Поскольку Float.parseFloat() не поддерживает концепцию локали, вы должны убедиться, что вы используете String.format() для получения ожидаемого формата. Один из способов обеспечения того, чтобы ваш код работал независимо от локали по умолчанию, - это использование константы Locale.ROOT:

String.format(Locale.ROOT, "%.2f", temp)
0 голосов
/ 26 апреля 2018

Вы, вероятно, поставили «,» вместо «.». Java и другое программирование только как '-5.25'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...