如何在java中扫描文件并将值赋给2D数组

时间:2014-10-23 23:32:15

标签: java multidimensional-array

我是java的新学员,我正在扫描.dat文件,我想将其作为blueJ中的表格打印出来。我的代码如下:

Scanner sc = new Scanner(new File ("test01.dat")); 
for (int r = 0; r < 6; r++){
    for (int c = 0; c < 3; c++){
        int temp = 0;
        temp = sc.nextInt();
        tri[r][c] = temp;
        System.out.print(tri[r][c]+" ");
    }
    System.out.println();
    sc.nextLine();
}

我几乎到达那里但我的问题是打印出的结果是19个数字,最后是零。(它应该是18个数字,最后没有零) 我该怎样摆脱那个零? 哦,此外,我的输入只是一个包含18个数字的列,我将其更改为包含6行和3列的表格。 有关详细信息,请参阅我的文件的链接:https://onedrive.live.com/redir?resid=B6E07F4C7635D773!4577&authkey=!AL9Zw4b4CWlS630&ithint=file%2cdat 感谢所有的评论,最后我找到了我需要的东西〜(^ o ^)〜

2 个答案:

答案 0 :(得分:1)

问题是在sc.nextInt之后使用sc.nextLine。

Scanner sc = new Scanner(new File ("test01.dat")); 
for (int r = 0; r < 6; r++){
    for (int c = 0; c < 3; c++){
        int temp = 0;
        temp = Integer.parseInt(sc.nextLine().trim());
        tri[r][c] = temp;
        System.out.print(tri[r][c]+" ");
    }
    System.out.println();
}

这应该解决它!
请注意,您的文件每行应该有一个整数。

答案 1 :(得分:0)

提供的答案StackFlowed是正确的。只需注释掉&#34; sc.nextLine()&#34;在外部for循环。它会让你在每一行之后跳过一个数字。