2017-01-16 2 views
-1

Я пытаюсь закодировать калькулятор Java. Бегаю в некоторых исключений NumberFormat при попытке вычислить следующее:NumberFormatException при умножении двух целых чисел

99.9(4x/8+k) 

Самое смешное, что его дает мне ошибку после того, как я распространяю 99.9 только если произведение 99.9 и «к» больше или равно 1000. Таким образом, для значений больше 10. В моем коде я пытаюсь загрузить строковую переменную с суммами всех констант уравнения, тогда возникает ошибка. Вот что код выглядит следующим образом:

double constantSum = 0; 
//create a stringtokenizer object and convert each token to a double as 
//follows, then, add the double to constantSum 
constantSum = constantSum + Double.valueOf(token);//the token comes 
//from the stringtokenizer object 

вход, который Double.valueOf (маркер) получает это 1098,900, который продукт 99,9 и 11, обратите внимание, что вход был округляется до места тысячных по объект NumberFormat, который я инициализировал в коде.

какие-либо идеи о том, как избавиться от этого NumberFormat исключения

Вот подробности о том, как исключение выглядит следующим образом: Исключения в потоке «основной» java.lang.NumberFormatException: Для ввода строки: «1,098.900 " в sun.misc.FloatingDecimal.readJavaFormatString (FloatingDecimal.java:2043) в sun.misc.FloatingDecimal.parseDouble (FloatingDecimal.java:110)

благодаря

+0

Вы ошибаетесь, вход не '1098.900', это' 1,098.900'. См. Сообщение об ошибке. Почему у вас есть это промежуточное значение как строка в коде? – Andreas

+0

Возможный дубликат [Что такое исключение NumberFormatException и как его исправить?] (Http://stackoverflow.com/questions/39849984/what-is-a-numberformatexception-and-how-can-i-fix-it) – xenteros

ответ

2

экс вероятно, вызвано запятой, которая находится внутри строки token. Для быстрого решения, вы можете попробовать отбрасывая все запятые:

constantSum += Double.valueOf(token.replaceAll(",", "")); 
               ^^^^ this removes all commas 
0

Вы косяк имеют запятую в строку, которую вы хотите превратить в два раза. Удалите запятую, и она должна работать.

 Смежные вопросы

  • Нет связанных вопросов^_^