我的问题发生在for循环中,从文件读入我的score数组中的值。程序读入并打印前6个值或2行整数,但后来我得到ArrayIndexOutOfBoundsException:2
我不知道为什么会停在那里。如果我有j <1000,它将读取17个值。无论如何,我正在读的文件在下面(不确定文本文件的格式)。
任何帮助将不胜感激
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);
}
}
答案 0 :(得分:1)
int scores[][] = new int [play-1][par-1];
为什么-1
?这就是你的AIOOB来自的地方。
答案 1 :(得分:1)
有两个问题:
int scores[][] = new int[play-1][par-1]; // Why -1 ?
和
for(int j=0; j<par; j++) // should be 'j < play' as 'j'
// is index to dimension
// with size 'play'
{
for (int i=0; i<play; i++) // should be 'i < par' as 'i' is
// index to dimension with
// size 'par'
{
scores[j][i]=infile.nextInt();
System.out.println(scores[j][i]);
}
}
答案 2 :(得分:0)
实际上,有三个问题。
[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]);