2015-03-07 1 views
0

Я пытаюсь выполнить некоторые большие вычисления из списка чисел в .txt-файле. Мне нужно использовать longs, а именно буквальные longs, и поэтому мне нужно включать «L» или «l» в конце каждый раз, когда я беру новое значение из файла. int litterals оставляют меня с отрицательными ответами ... Я попытался добавить суффикс 'L' каждый раз, когда я читал файл, но Long.valueOf() генерирует исключение NumberFormatException. Как я могу объявить синтаксический анализ длинным буквальным?Разбор длинных литералов из файла ввода/переменной Java

import java.util.*; 
import java.io.*; 
public class Test{ 

public static void main(String[] args) throws FileNotFoundException{ 
    File numFile = new File("numbers.txt"); 
    Scanner in = new Scanner(numFile); 
    int total = 0; 
    Long tmp; 
    while(in.hasNextLine()){ 
     tmp = Long.valueOf(in.nextLine().substring(0,12)); 
     System.out.println(tmp); 
     total += tmp; 
    } 
} 

Я ценю помощь здесь, но вы все виды игнорируя мой вопрос ... Мой вопрос: Как я могу объявить анализироваться долго, как буквальное долго (учитывая, что я никогда не жесткий провод значение?). Приведенный выше пример не связан, он не требует отладки, это всего лишь краткая демонстрация того, что я пытаюсь сделать.

+3

Вам не нужно добавлять ни одного L в любом месте. Это полезно только тогда, когда вы хотите иметь буквальное длинное значение * в коде *. используя 'Long.valueOf (" 1234 ")', вы получите 'Long'. –

+0

Можете ли вы напечатать значение 'in.nextLine(). Substring (0,12)', что не удается? – Mureinik

+0

Что такое пример полной строки? – Bohemian

ответ

2

Если отдельные цифры являются слишком большими для int, их сумма будет также. Используйте также long для всего.