Я делаю программу, которая читает из файла 3 числа, двойные или целые числа, в строке, кроме первой. Первая строка - это количество строк после. Три числа в каждой строке являются переменными a, b и c в квадратичной формуле. Затем программа должна вернуть разницу между + и - частью формулы. Вот пример того, что может содержать файл.
3
1 2 4
1.5 3.12 4.31
0.09 5 2
Моя проблема заключается в том, что при использовании сканера для преобразования токенов в файле в двойники, чтобы их можно было ввести в квадратичную формулу, я получаю следующую ошибку:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1250)
at java.lang.Double.parseDouble(Double.java:540)
at gorf.main(gorf.java:23)
вот часть моего кода:
int lines = Integer.parseInt(sc.nextLine());
double a;
double b;
double c;
String line = "";
Scanner abc = new Scanner(line);
for(int count = 0; count < lines; count++)
{
line = sc.nextLine();
abc = new Scanner(line);
a = Double.parseDouble(abc.next());
b = Double.parseDouble(abc.next());
c = Double.parseDouble(abc.next());
}
"3"
, который был в начале вашего ввода). - person Pshemo   schedule 06.12.2015"1"
как двойника не должен быть проблемой. Я думаю, что комментарий Пшемо все еще в некоторой степени актуален, поскольку там должен быть какой-то невидимый персонаж, который создает проблемы. Рассмотрите возможность присвоения результатаScanner.next()
переменной перед синтаксическим анализом, а затем исследуйте каждый из символов по отдельности, чтобы выяснить, какой лишний символ прокрался туда. - person sstan   schedule 06.12.2015"1"
вот код, который я изменил.str = abc.next(); System.out.println(str); a = Double.parseDouble(str);
Извините за форматирование, почему-то не могу заставить его работать. @sstan - person Dane Williams   schedule 06.12.2015strVar.length()
, которая, как я предсказываю, вернет больше, чем1
. Затем вы можете изучить каждого из персонажей по отдельности, что-то вроде:(int)strVar.charAt(n)
. - person sstan   schedule 06.12.2015(int)strVar.charAt(n)
. Это даст вам значение кодовой точки Unicode для символа в позицииn
, даже если сам символ не виден. Просто заменитеn
на0
и1
, чтобы прочитать оба значения кодовой точки Unicode. - person sstan   schedule 06.12.2015173
— это мягкий дефис, а49
— число1
. Мягкий дефис должен быть виден, но, по-видимому, этот символ вызывает проблемы и не всегда отображается правильно. В любом случае, вы хоть представляете, как этот персонаж попал в ваш файл? Вы использовали определенный редактор? Возможно, вы захотите убедиться, что вы используете редактор, который не портит ваш текст. - person sstan   schedule 06.12.2015