Java:将文件中的整数读入数组

Nor*_*ner 13 java arrays io

File fil = new File("Tall.txt");
FileReader inputFil = new FileReader(fil);
BufferedReader in = new BufferedReader(inputFil);

int [] tall = new int [100];

String s =in.readLine();

while(s!=null)
{
    int i = 0;
    tall[i] = Integer.parseInt(s); //this is line 19
    System.out.println(tall[i]);
    s = in.readLine();
}

in.close();
Run Code Online (Sandbox Code Playgroud)

我试图使用文件"Tall.txt"将包含在其中的整数写入名为"tall"的数组中.它在某种程度上这样做,但是当我运行它时,它会抛出以下异常(:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at BinarySok.main(BinarySok.java:19)
Run Code Online (Sandbox Code Playgroud)

为什么要这样做,我该如何删除它?在我看来,我将文件作为字符串读取,然后将其转换为int,这不是非法的.

Jul*_*ier 43

你可能想做这样的事情(如果你在java 5及以上)

Scanner scanner = new Scanner(new File("tall.txt"));
int [] tall = new int [100];
int i = 0;
while(scanner.hasNextInt()){
   tall[i++] = scanner.nextInt();
}
Run Code Online (Sandbox Code Playgroud)

  • @Vanuan:`java.util.ArrayList` (6认同)
  • 如果您不知道有多少整数怎么办? (5认同)

eri*_*son 9

您的文件中必须有一个空行.

您可能希望将parseInt调用包装在"try"块中:

try {
  tall[i++] = Integer.parseInt(s);
}
catch (NumberFormatException ex) {
  continue;
}
Run Code Online (Sandbox Code Playgroud)

或者只是在解析之前检查空字符串:

if (s.length() == 0) 
  continue;
Run Code Online (Sandbox Code Playgroud)

请注意,通过i在循环内初始化索引变量,它始终为0.您应该在while循环之前移动声明.(或使其成为for循环的一部分.)