Java 修复了记事本中的TictaToe错误?

Java 修复了记事本中的TictaToe错误?,java,netbeans,notepad,Java,Netbeans,Notepad,嗨,我在做作业,我在做一个井字游戏。根据老师的指示,我正在使用记事本,我在一个记事本中制作了两个类,一个主要类是Tictatcoe名称或第二个游戏板。在netbeans中一切都正常,但当我在记事本中实现并通过cmd执行它时,出现了错误 TicTacToe.java:16:错误:GameBoard类是公共的,应在名为GameBoard.java的文件中声明` ` 公共类游戏板{ 私有char[][]游戏板; 公共游戏局() {gameBoard=新字符[3][3]; 对于(int row=0;ro

嗨,我在做作业,我在做一个井字游戏。根据老师的指示,我正在使用记事本,我在一个记事本中制作了两个类,一个主要类是Tictatcoe名称或第二个游戏板。在netbeans中一切都正常,但当我在记事本中实现并通过cmd执行它时,出现了错误 TicTacToe.java:16:错误:GameBoard类是公共的,应在名为GameBoard.java的文件中声明`

`

公共类游戏板{
私有char[][]游戏板;
公共游戏局()
{gameBoard=新字符[3][3];

对于(int row=0;row,在单个Java文件中只能有一个
public
类,并且Java文件的名称必须与其中的
public
类的名称匹配。一些可能的解决方案:

选项1-将
GameBoard
类拉入一个新文件,并将该文件命名为
GameBoard.java
。这意味着您还需要更改该文件的名称。确保这些文件位于同一文件夹中,除非您要添加
import
语句

选项2-删除
GameBoard
类的修饰符(
public
)(默认为package private)


选项3-将
GameBoard
类嵌套在TictoE类中(如果愿意,您仍然可以更改/删除修饰符;
public
通常不建议嵌套类)

您不能在一个文件中声明两个公共类(除非它们是嵌套的).现在,您已经在同一个.java文件中定义了
TicTacToe
GameBoard


阅读本教程,了解每个文件只允许一个公共类(TicTacToe.java),因此您需要重命名它。您可以使用不带访问修饰符的其他类:

public class TicTacToe {
    public static void main(String[] args) {
        GameBoard board=new GameBoard();
        board.displayBoard();
    }
}
class GameBoard {
    private char[][] gameBoard;
    public GameBoard() {
        gameBoard = new char[3][3];
        for (int row = 0; row < gameBoard.length; row++) {
            java.util.Arrays.fill(gameBoard[row], ' ');
        }
    }
    public void displayBoard() {
        for (int row = 0; row < gameBoard.length; row++) {
            for (int col = 0; col < gameBoard.length; col++) {
                System.out.print("\t" + gameBoard[row][col]);
                if (col == 0 || col == 1)
                    System.out.print("|");
            }
            System.out.print("\n---------------------------\n");
        }
    }
}
公共类TicTacToe{
公共静态void main(字符串[]args){
游戏板=新游戏板();
board.displayBoard();
}
}
类游戏板{
私有char[][]游戏板;
公共游戏局(){
gameBoard=新字符[3][3];
对于(int row=0;row
Notepad没有为您创建.java文件。您需要重命名.txt文件的扩展名。当使用像NetBeans这样的IDE时,它会为您这样做。但是我正在使用已经命名的TicTacToe.javaread阅读答案——也就是说,请参阅我的答案中提供的Oracle文档以获得直接指导。如果我更改了名称,那么新的错误将是tictactoe应该被声明为etci在一个记事本中使用了两个类,主类是TictoE,记事本的名字也是TictoE.java,另一个类是GameBoard类,这里是错误确切的TictoE.java:16:error:class GameBoard是public,应该在名为GameBoard.java` private修饰符的文件中声明,如果我创建一个新文件,然后如何从主文件访问它?@user3668974我更新了我的答案,使其更清晰。选项2最简单,但所有3个都可以解决您的问题。是的,您可以,只要其中只有一个是公共的。尝试一下。如果我嵌套了相同的错误occor。@Zar如果我将新文件放在另一个文件中,您能告诉我如何访问新文件GameBoard吗,从主文件?
public class TicTacToe {
    public static void main(String[] args) {
        GameBoard board=new GameBoard();
        board.displayBoard();
    }
}
class GameBoard {
    private char[][] gameBoard;
    public GameBoard() {
        gameBoard = new char[3][3];
        for (int row = 0; row < gameBoard.length; row++) {
            java.util.Arrays.fill(gameBoard[row], ' ');
        }
    }
    public void displayBoard() {
        for (int row = 0; row < gameBoard.length; row++) {
            for (int col = 0; col < gameBoard.length; col++) {
                System.out.print("\t" + gameBoard[row][col]);
                if (col == 0 || col == 1)
                    System.out.print("|");
            }
            System.out.print("\n---------------------------\n");
        }
    }
}