从文本文件读入数组但没有出现这样的元素异常?

时间:2017-09-02 00:59:39

标签: arrays file exception text integer

我是计算机科学的初学者,我在尝试将文本文件中的整数放入数组时遇到了一些麻烦。文本文件中有七行整数,每行有3个整数,用空格隔开,如:

0 15 20
100 25 96
85 42 15
52 63 47
85 44 98 
41 55 74
85 74 15

我应该将每行中的三个数字放入三个不同的数组中,这样一个数组将包含第一个数字,第二个数组将包含第二个数字,第三个数组将包含第三个数字,全部来自同一行。 我的代码在下面,但是当它运行时,我得到一个没有这样的元素异常,当我打印第一个数组时,它显示存储在数组的第一个位置的第一个数字,但其余的数字是第二个数字每一行。循环中发生了什么?:(我很感激任何类型的解释。

    import java.io.*;
    import java.util.Scanner;
    import java.util.Arrays;
    public class Trying{
    public static void main(String [] args){
    Scanner s=null;
    int [] a= new int [7];
    int [] b= new int [7];
    int [] c= new int [7];
    int i=0;
    try{
      s= new Scanner(new File("input.txt"));
      while(s.hasNextLine()){
        String line=s.nextLine();
        Scanner cal= new Scanner(line);
        a[i]=cal.nextInt();
        b[i]=cal.nextInt();
        c[i]=cal.nextInt();
        i++; 
      }
    }
    catch(Exception eee){
      eee.printStackTrace();
    }
    System.out.println(Arrays.toString(a));
  }
}

1 个答案:

答案 0 :(得分:0)

你应该替换“c [i] = s.nextInt();” “c [i] = cal .nextInt();”。我认为您错误地使用了s扫描仪对象而不是cal扫描仪对象。

您也可以使用String.split()方法。 而不是使用

String line=s.nextLine();
    Scanner cal= new Scanner(line);
    a[i]=cal.nextInt();
    b[i]=cal.nextInt();
    c[i]=s.nextInt();

你可以试试这个:

String[] lines=s.nextLine().split(" ");
    a[i]=Integer.parseInt(lines[0]);
    b[i]=Integer.parseInt(lines[1]);
    c[i]=Integer.parseInt(lines[2]);