2013-06-19 5 views
1

Для моего назначения мне необходимо создать программу для чтения текстового файла и вычисления значений там. Текстовый файл содержит что-то вроде этого:Преобразование строки из буферизованного считывателя в double

"11047461 [tab] 60.5 

12024121 [tab] 58 

12027019 [tab] 33" 

на 8 номеров Infront будут игнорировать, только номера на спине рассчитаны.

после ссылаемся некоторые кодировки из этого web.I все еще получает сообщение, как это:

Exception in thread "main" java.lang.NumberFormatException: For input string: "11047461 60.5" 
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222) 
    at java.lang.Double.parseDouble(Double.java:510) 
    at Problem2.main(Problem2.java:16) 

public static void main(String[] args) throws IOException, FileNotFoundException { 
    // TODO Auto-generated method stub 
    BufferedReader read = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\Users\\My World\\Downloads\\PRG102D.txt"))); 

    String line; 
    double score; 

    while((line = read.readLine()) != null) { 
    score = Double.parseDouble(line); 
    System.out.println(score); 


} 

} 

ответ

2

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

+0

есть ли способ сделать это ?? я только знаю, как отменить его с помощью массива –

+1

@TziyhiChoo Вы можете использовать [ 'Строка # Раскол()'] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)) ** ИЛИ ** использовать ['Класс сканера'] (http: //docs.oracle.com/javase/7/docs/api/java/util/Scanner.html) – Smit

+0

@TziyhiChoo Посмотрите на методы класса String –

0

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

здесь то, что вы можете сделать:

while((line = read.readLine()) != null) 
    { 
    score = Double.parseDouble(line.subString(lastIndexOf(' ')+1)); 
    System.out.println(score); 
    } 
+0

Предполагается, что вкладка состоит из пробелов, а не символов табуляции. – ApproachingDarknessFish

+0

нет, это не имеет ничего общего с символом табуляции. я увидел пробел после него, поэтому он принадлежит ему. во всяком случае, он может поместить что-либо в функцию «lastIndexOf», которая соответствует его потребностям. –

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