NumberFormatException试图将“66”解析为整数

时间:2014-09-09 03:07:26

标签: java numberformatexception parseint

所以我有这段代码从csv文件中读取文本,其中nums []遍历整个文件并存储所述学生的编号,并且成绩[] []通过并存储他们的每个成绩:< / p>

 Scanner sc = new Scanner(new FileReader("location.csv"));
    String [][] stuff = new String [10][];
    for(int i = 0; i<10; i++){
    String line = sc.nextLine();
    stuff[i] = line.split.(",");
 }
  int [][] grades = new int [10][10];
  int [] nums = new int [10];

  for(int x = 0; x<10; x++){
     nums[x] = Integer.parseInt(stuff[x][0]);
     System.out.println(nums[x]);
      for(int y = 0; y<11; y++){
      grades[x][y] = Integer.parseInt(stuff[x][y]);
    }
}

问题在于麻木效果很好,但成绩无法存储超过第一列数据的任何值。如果我设置成绩[x][y] = stuff[any number] [0]它将会运行,但如果我尝试在行中超过0,则会错误终止。

数据文件的一部分:

1, 66, 82, 85, 87, 65, 80, 97, 75, 68, 72

2, 70, 63, 75, 62, 84, 65, 67, 95, 81, 96

3, 100, 98, 73, 78, 69, 75, 97, 66, 61, 90

4, 75, 62, 79, 78, 87, 73, 74, 76, 63, 84

5, 81, 90, 80, 66, 75, 96, 73, 77, 66, 87

堆栈跟踪: java.lang.NumberFormatException:对于输入字符串:&#34; 66&#34;

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

在java.lang.Integer.parseInt(Integer.java:481)

在java.lang.Integer.parseInt(Integer.java:527)

固定代码(我道歉,我没有逐字复制代码并在其中包含一些额外的错误)

public static void main(String [] args)抛出FileNotFoundException

{

    Scanner sc = new Scanner(new FileReader("location.csv"));
    String [][] values = new String [10][];
    for(int i = 0; i<10; i++){
    String line = sc.nextLine();
    values[i] = line.split(",");
 }
  int [][] grades = new int [10][10];
  int [] nums = new int [10];

   for(int x = 0; x<10; x++){
     nums[x] = Integer.parseInt(values[x][0]);
     System.out.println(nums[x]);
      for(int y = 0; y<10; y++){
      grades[x][y] = Integer.parseInt(values[x][y+1].trim());

    }

}

2 个答案:

答案 0 :(得分:5)

你没有摆脱令牌之间的空白。

请务必清除它,最好使用String#trim()

Integer.parseInt(stuff[x][0].trim());

为了记录,我还希望使用比stuff更好的名称。

答案 1 :(得分:0)

此外,当您修复其他错误时,您将获得超出范围的索引:

     for( int y = 0; y < 11; y++ )
        grades[x][y] = Integer.parseInt( stuff[x][y] );

你的所有数组索引都是10,在Java中意味着0到9. y这里将是10,所以繁荣超出范围。

考虑到评论中指出的语法错误,请将来复制并粘贴您正在使用的EXACT代码。如果我们调试的代码与您实际使用的代码不同,那就不好了。