Java-如何解析我的方法无法应用于我的TicTacToe游戏的给定类型错误?

时间:2015-10-01 21:45:38

标签: java arrays

我正在制作一个TicTacToe游戏,其中包括初始化游戏,显示棋盘,显示游戏选项,说明轮到谁,检查获胜者,添加动作,重启游戏,检查棋盘是否为全,并玩游戏。我在添加移动方法和玩游戏方法时遇到问题。

  public boolean addMove(int row, int column) {
  boolean nonacceptable = true;
  while (nonacceptable) {
     System.out.println("Which row and column would you like to enter your mark? Enter the row and column between 0 and 2 separated by a space.");
     row = input.nextInt();
     column = input.nextInt();
     if ((row >= 0 && row <=2) && (column >= 0 && column <=2)) { //make sure user entered a number between 0 and 2
        if (gameBoard[row][column] != ' ') 
           System.out.println("Sorry, this position is not open!");

        else {
           gameBoard[row][column] = currentMark;
           nonacceptable = false;
        }
     }   
     else 
        System.out.println("That position is not between 0 and 2!");
     }
     return nonacceptable;     

}

这是我的游戏方法:

  public void letsPlay() {
  while (true) {
     displayBoard();
     gameOptions();
     int choice = input.nextInt();
     if (choice == 1) {
        if (addMove()) {
           displayBoard();
           checkWinner();
           System.exit(0);
        }
        else if (!boardFull()) {
           displayBoard();
           System.out.println("Board full!");
           System.exit(0);
        }
        else {
           whoseTurn();
        }
     }
     else if (choice == 2) 
        restart();
     else if (choice == 3) 
        System.exit(0);
     else 
        System.out.println("Try again!");
  }
}

当我编译时,我收到此错误:TicTacToe.java:110:错误:类TicTacToe中的方法addMove无法应用于给定类型;             if(addMove()){                 ^   required:int,int   发现:没有争论   原因:实际和正式的参数列表长度不同 1错误

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

很明显。

你的addMove函数签名接受两个参数

public boolean addMove(int row, int column) { 
                         ^          ^

每当您想要调用或使用addMove函数时,您必须遵循您在签名函数中定义的规则。

因此,解决方案是在您调用addMove函数的位置传递两个类型为int的参数,这个问题就消失了。

注意:Read more about how to define a function and call it in Java

答案 1 :(得分:1)

您只声明了接受两个int参数的addMove方法。

public boolean addMove(int row, int column) { ...

如果您没有声明addMove没有参数(public boolean addMove() {),则无法将其称为addMove()

根据您的代码,您不需要参数,因为您无论如何都要从Scanner分配值,因此请将方法声明更改为:

public boolean addMove() {
    //declare the variables
    int row, column;
    ...
}