Reading ints into a multidimensional array
My problem occurs during the for loops to read in the values from the file into my scores array. The program reads in and prints the first 6 values or 2 lines of ints, but then I get ArrayIndexOutOfBoundsException: 2
I have no idea why this is stopping there. If I have j<1000, it will read 17 values. Anyway, the file I'm reading in is below (wasn't sure the formatting for a text file).
Any help would be appreciated
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
Code Java:
import java.io.*;
import java.util.*;
public class Calc
{
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);
}
}
}
Re: Reading ints into a multidimensional array
You could use System.out.println() to make sure you are reading what you expect and assigning that input to whatever you mean to assign it to.
Code :
while(infile.hasNext())
{
players[k]=infile.next();
System.out.println(players[k] + "read and assigned to players[k]");
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] + "read and assigned to scores[" + j + "][" + i + "]");
}
}
Re: Reading ints into a multidimensional array
There's a different between the methods '.next()' and '.nextLine()'. "Next" only reads up until a space a line break occurs, next line keeps reading until the file has ended. What you wanna do is something like this:
Code :
Scanner reader = new Scanner(new File(filename));
while(reader.hasNextLine()){
String line = reader.nextLine();
if(!line.equals("")){
//do whatever with that line
}
}