我的问题在for循环期间发生,以将文件中的值读入我的scores数组。该程序读入并打印前6个值或2行int,但随后我得到ArrayIndexOutOfBoundsException:2

我不知道为什么要停在那里。如果我的j
任何帮助,将不胜感激

Andy Matt Tom

3    2     3

4   4   5

3   3   2

2   2   2

2   4   2

2   3   2

4   4   5

2   3   3

4   3   5

3   3   6

2   2   5

3   3   3

3   3   2

3   2   4

3   2   6

3   4   3

2   3   2

2   2   2

50  52  62


public static void main( String args[] )
{
    try
    {

    if (args.length<1)
    {
        System.out.printf("\n...You must enter the name of a file\n");
        System.exit(0);
    }

    Scanner infile  = new Scanner ( new File(args[0]) );


    int par= 3;
    int play= 18;
    String[] players= new String[play];
    int k=0;
    int scores[][]= new int[play-1][par-1];

    while(infile.hasNext())
    {
    players[k]=infile.next();

    k++;

    if (k==play)
    break;
    }


    for(int j=0; j<par; j++)
    {
        for (int i=0; i<play; i++)
        {
        scores[j][i]=infile.nextInt();
        System.out.println(scores[j][i]);
        }

    }

    }
    catch (FileNotFoundException e)
    {
    System.out.println("Bug");
    System.exit(0);
    }

}

最佳答案

实际上,存在三个问题。


只有3个玩家,而不是18个
您需要一个18x3的阵列,而不是17x2的阵列
[i][j]代替[j][i]


将您的代码与我的修改版本(其工作原理类似)不同:

22c22
<     String[] players= new String[play];
---
>     String[] players= new String[par];
24c24
<     int scores[][]= new int[play-1][par-1];
---
>     int scores[][]= new int[play][par];
32c32
<     if (k==play)
---
>     if (k==par)
41,42c41,42
<         scores[j][i]=infile.nextInt();
<         System.out.println(scores[j][i]);
---
>         scores[i][j]=infile.nextInt();
>         System.out.println(scores[i][j]);

09-12 08:34