Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组越界异常?(致力于康威的生活游戏)_Java_Arrays_Conways Game Of Life - Fatal编程技术网

Java 数组越界异常?(致力于康威的生活游戏)

Java 数组越界异常?(致力于康威的生活游戏),java,arrays,conways-game-of-life,Java,Arrays,Conways Game Of Life,所以我的第一节java课已经上了一半。。。所以你可能需要为我把它分成几个小步骤,我道歉 我现在正在做康威的人生游戏。幸运的是,我们没有使用gui(…还没有?),但我仍然坚持简单地设置网格。 我的代码编译得很好,但当我运行时,我得到: 错误:无法找到或加载gameOfLife主类 因此,我进一步研究了它,似乎问题在于我的网格文件,它给出了相同的错误: 错误:无法找到或加载主类网格 编辑**:这就是我运行它们的方式 [bgorgero@sraysvcs2 gameOfLife]$ java game

所以我的第一节java课已经上了一半。。。所以你可能需要为我把它分成几个小步骤,我道歉

我现在正在做康威的人生游戏。幸运的是,我们没有使用gui(…还没有?),但我仍然坚持简单地设置网格。 我的代码编译得很好,但当我运行时,我得到: 错误:无法找到或加载gameOfLife主类 因此,我进一步研究了它,似乎问题在于我的网格文件,它给出了相同的错误: 错误:无法找到或加载主类网格

编辑**:这就是我运行它们的方式

[bgorgero@sraysvcs2 gameOfLife]$ java gameOfLife
Error: Could not find or load main class gameOfLife
[bgorgero@sraysvcs2 gameOfLife]$ java Grid
Error: Could not find or load main class Grid
编辑*:

[bgorgero@sraysvcs2 ~]$ java gameOfLife/gameOfLife
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at gameOfLife.gameOfLife.main(gameOfLife.java:20)
这就是我在尝试访问它而不在文件夹中时遇到的错误

我试图让网格从输入txt文件中读取,以确定数组应该有多大,然后读取0和1并将它们存储到数组中。到目前为止,这是我的代码

gameOfLife.java

package gameOfLife;
import java.util.Scanner;
import java.io.File;
import java.io.PrintWriter;
import java.io.FileNotFoundException;

public class gameOfLife{
    public static void main (String[] args) throws Exception {
       File input = new File("gameBoardInput.txt");
        Scanner reader = new Scanner(input);
        int x = reader.nextInt();
        int y = reader.nextInt();

        Grid grid = new Grid(x,y);

        for(int i = 0; i < x; i++){
            String cupcake = reader.nextLine();
            char[] muffin = cupcake.toCharArray();
            for(int j = 0; j < y; j++){
                grid.setAt(i,j,muffin[j]);
                }
            }

    }
}

谢谢你们

如果你的班级在
生活包中
你需要在名为
gameOfLife

然后,使用以下命令运行它:

$ java gameOfLife/gameOfLife
根据您提供的代码,确保
gameBoardInput.txt
位于同一目录中。我让它在计算机上运行时出现了另一个错误:

$ ls . gameOfLife/
.:
gameBoardInput.txt  gameOfLife

gameOfLife/:
gameOfLife.class  Grid.class

$ java gameOfLife/gameOfLife
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at gameOfLife.gameOfLife.main(gameOfLife.java:20)

另一方面,您不应该用小写字母命名类。我建议该课程改为
GameOfLife
。请在此处阅读更多信息:


您还有一些其他问题:

  • 您使用了错误的变量名。使用比
    cupcake
    muffin
    更好的名称,这些名称实际上意味着变量是什么。e、 g.使用
    nextLine
    代替
    cupcake
    lineChars
    代替
    muffin
  • 您正在尝试分析空行。最简单的修复方法是添加此循环以跳过空行:
  • 代码:

    String cupcake = reader.nextLine();
    while(cupcake.isEmpty()) cupcake = reader.nextLine();
    
  • 在循环中交换了
    x
    y
    。按照循环的工作方式,
    y
    应该是第一个数字,
    x
    应该是第二个数字,例如
  • 代码:


    这是我的确切密码:

    gameOfLife/gameOfLife.java
    在main方法中使用try-catch块,不要让它抛出异常。 你的JDK版本是什么?尝试以下方法:

    public static void main(String[] args){
        try{
            //insert code here
        }catch(Exception e){e.printStackTrace();}
    
    另外,使用
    java.util.ArrayList
    使用其
    add()
    方法存储输入文本。然后使用size()获取行数,使用
    get(0).length()获取列数


    此外,您还缺少代码。main方法没有20行,异常发生在第20行。这可能是由于计算邻居的代码中存在越界条件,但我们需要代码的其余部分来解决这个问题。请进行相应的编辑。

    您在命令行中键入什么来运行程序?您能否发布所获得异常的堆栈跟踪?您的标题暗示ArrayIndexOutOfBoundsException,但在您的问题中,您提到了“未找到类”错误。非常感谢!我真的很抱歉,或者变量名,我保证我通常使用更好的名称,但我昨晚看得很烦,所以我发誓以后会更改它。我添加了while循环,改变了x和y的位置(哎呀!),并重新编译。在用java gameOfLife/gameOfLife运行了相同的程序之后,我仍然遇到了与您相同的错误。哦,我还从输入文件中删除了额外的换行符。我现在编辑了你原来的帖子来匹配我的。当我运行它时,没有出现任何错误。我使用您编辑的内容再次尝试,但仍然得到“线程中的异常”java.lang.ArrayIndexOutOfBoundsException:0 at gameOfLife.gameOfLife.main(gameOfLife.java:20)”我不确定原因。所有文件都保存在同一个文件夹中,其中没有多余的文件。我不确定给我这个错误还有什么不对。@BriannaOrgeron如果我复制/粘贴了没有给我这个错误的整个代码,可能在某个地方有不匹配的地方。
    String cupcake = reader.nextLine();
    while(cupcake.isEmpty()) cupcake = reader.nextLine();
    
    int y = reader.nextInt();
    int x = reader.nextInt();
    
    package gameOfLife;
    
    import java.util.Scanner;
    import java.io.File;
    import java.io.PrintWriter;
    import java.io.FileNotFoundException;
    
    public class gameOfLife {
        public static void main(String[] args) throws Exception {
            File input = new File("gameBoardInput.txt");
            Scanner reader = new Scanner(input);
            int y = reader.nextInt();
            int x = reader.nextInt();
    
            Grid grid = new Grid(x, y);
    
            for (int i = 0; i < x; i++) {
                String cupcake = reader.nextLine();
                while (cupcake.isEmpty())
                    cupcake = reader.nextLine();
                char[] muffin = cupcake.toCharArray();
                for (int j = 0; j < y; j++) {
                    grid.setAt(i, j, muffin[j]);
                }
            }
        }
    }
    
    package gameOfLife;
    
    public class Grid {
        protected int[][] grid;
    
        public Grid(int x, int y) {
            grid = new int[x][y];
            for (int i = 0; i < x; i++) {
                for (int j = 0; j < y; j++) {
                    grid[i][j] = 0;
                }
            }
        }
    
        public int nuggets(int x, int y) {
            return grid[x][y];
        }
    
        public void setAt(int column, int row, int alive) {
            grid[column][row] = alive;
        }
    
    }
    
    5
    6
    01000
    00100
    00010
    01110
    00100
    00000
    
    public static void main(String[] args){
        try{
            //insert code here
        }catch(Exception e){e.printStackTrace();}