numberFormatException

hi, does anybody know y im getting a numberFormatexception at : " int currentValue = Integer.parseInt(tokenizer.nextToken());"
with this code:

String mapValues[][] = new String[20][20];
try
{
FileReader mapFileReader = new FileReader(“map.txt”);
BufferedReader mapReader = new BufferedReader(mapFileReader);

              for (int row = 0; row < 20; row++)
              {
                    String line = mapReader.readLine();
                    StringTokenizer tokenizer = new StringTokenizer(line, " ");
                    for (int col = 0; col < 20; col++)
                    {
                          int currentValue = Integer.parseInt(tokenizer.nextToken());
                          mapValues[row][col] = line;
                    }
              }
        }
        catch (IOException e){ System.out.println("Error: " + e); }

the number format in the files is like this:

11001
00100
11011
11010

thx in advance !

if there’s no spaces between the numbers on the line, what’s the point of StringTokenizer? It would be better to cycle through each number via String’s charAt(int) method. I probably don’t understand exactly what you’re trying to do, but I would think this code would do the same (but actually work):


//String mapValues[][] = new String[20][20]; 
// you should note that your line's max length is 5, not 20!
String mapValues[][] = new String[5][20]; // 20 rows, 5 cols
try {
      int col,row;
      BufferedReader b = new BufferedReader(new InputStreamReader(new FileInputStream("map.txt")));
      String line;
      for (row = 0;row < mapValues.length;row++) {
            line = b.readLine();
            if (line == null) {
                  break;
            }
            for (col = 0;col < mapValues[row].length;col++) {
                  mapValues[row][col] = Integer.parseInt(""+line.charAt(col));
            }
      }
}  
catch (IOException e) {
      e.printStackTrace();
}

I didn’t compile that so there might be a typo or something you’ll need to fix :smiley:

I hope I somewhat understood what you wanted. Good luck!

Well, this definitely looks like the input you are reading from the file is not what you expect it to be. Although woogley is definitely right in that the StringTokenizer would not work if there are no spaces in the input, I still don’t understand why there is a NumberFormatException.

Instead I would expect the StringTokenizer to throw a NoSuchElementException.

I would suggest to a) print the stack trace (use e.printStackTrace() instead of println()), b) also catch other exceptions than just IOExceptions, c) print the current token inside the inner loop, just to see what it is (make sure to enclose it in brackets or something, to see where spaces are, if any; there won’t be any leading or trailing spaces with a space delimiter in the StringTokenizer, but this is useful if you use different delimiters).