java - 康维斯生命游戏中的项目不匹配异常

标签 java

我正在为类(class)开发康威的生命游戏程序。下面的方法读取指定的输入文件,将其读入 int 数组,然后返回该数组。

import java.util.*;
import java.io.*;

public class Proj5 {
public static void main(String[] args) throws IOException   {
//the main method controls the flow of the program
    String filename = args[0];
    int[][] cells = readBoard(filename);

    for (int i = 0; i < cells.length; i++)  {
        for (int j = 0; j < cells[i].length; j++)   {
            System.out.print(cells[i][j]);
        }
        System.out.println("");
    }

}

public static int[][] readBoard(String filename) throws IOException {
// This method reads the specified input file, reads it into an int[][] array, and returns that array.
    Scanner inFile = new Scanner(new File(filename));
    int row = Integer.parseInt(inFile.nextLine());
    int col = Integer.parseInt(inFile.nextLine());

    int[][] cells = new int[row][col];

    inFile.nextLine();
    for (int i = 0; i < row; i++)   {
        for (int j = 0; j < col; j++)   {
            cells[i][j] = inFile.nextInt();
        }
        inFile.nextLine();
    }

    inFile.close();
    return cells;
}

扫描仪读取的文本文件格式如下..其中第一行是行数,第二行是列数,其余的是需要放入数组中的数据:

25
77
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000001110000000000000000000000000000000000000000000000000000000
00000000000000001110001110000000000000000000000000111110000000000000000000000
00000000000000111100000111100000000000000000001111100011111000000000000000000
00000000000000001110001110000000000000000000000000111110000000000000000000000
00000000000000000001110000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000001110000000000000000000000000000000000000000000000000000000
00000000000000001110001110000000000000000000000000111110000000000000000000000
00000000000000111100000111100000000000000000001111100011111000000000000000000
00000000000000001110001110000000000000000000000000111110000000000000000000000
00000000000000000001110000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000

但是,当我运行我的程序时..我得到:

线程“main”中出现异常java.util.InputMismatchException:输入字符串:“00000000000000000001110000000000000000000000000000000000000000000000000000000” 在 java.util.Scanner.nextInt(来源不明)

位于 java.util.Scanner.nextInt(来源未知)

在 Proj5.readBoard(Proj5.java:30)

在 Proj5.main(Proj5.java:8)

我不完全确定为什么或如何解决它......

最佳答案

使用nextInt()将尝试将每个文件行转换为单个整数。

会引发异常,因为整行被视为单个数字,不适合 int 值。

我继续解决此问题的方法是每行使用一个 readLine 调用来消耗整行输入。然后使用 StringcharAt 方法检查该行特定列处的字符。如有必要,可以通过减去 '0' 的值来有效地将其转换为 int

关于java - 康维斯生命游戏中的项目不匹配异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28954213/

相关文章:

java - 您将如何以彩色方式运行外部 JFrames?

java - getSystemResourceAsStream() 返回 null

java - JR异常 : Error retrieving field value from bean: bornDate

java - 中间带有通配符的 Servlet URL 模式

java - 使用代理通行证时 Apache 2.4.43 https 出现问题

java - 为什么 Flink 中的 MapState 变量没有保留以前的值?

java - BouncyCaSTLe - 如何获取 TimeStampToken 的到期日期

Nimbus 外观中的 Java Swing Accordion

java - 如何在 JTabbedPane 中制作 CardLayout

java - 如何从 Android Java 中的另一个类访问 ArrayList?