Как вы возвращаете значение из метода и вызываете его в другом методе?

#java #tic-tac-toe

#java #крестики-нолики

Вопрос:

Я пытаюсь получить метод, который возвращал бы одно или другое значение, и использовать этот ответ для выполнения предложения if в другом методе. В моем методе isWinner у меня есть:

 public int isWin(int player)
{
    if(((board[0][0] board[0][1] board[0][2]==3)||
        (board[1][0] board[1][1] board[1][2]==3)||
        (board[2][0] board[2][1] board[2][2]==3)||
        (board[0][0] board[1][0] board[2][0]==3)||
        (board[0][1] board[1][1] board[2][1]==3)||
        (board[0][2] board[1][2] board[2][2]==3)||
        (board[0][0] board[1][1] board[2][2]==3)||
        (board[2][0] board[1][1] board[0][2]==3)))

    {
        return 1;
    }

    else if(((board[0][0] board[0][1] board[0][2]==6)||
             (board[1][0] board[1][1] board[1][2]==6)||
             (board[2][0] board[2][1] board[2][2]==6)||
             (board[0][0] board[1][0] board[2][0]==6)||
             (board[0][1] board[1][1] board[2][1]==6)||
             (board[0][2] board[1][2] board[2][2]==6)||
             (board[0][0] board[1][1] board[2][2]==6)||
             (board[2][0] board[1][1] board[0][2]==6)))

    {
        return 2;
    }
}
  

Где я пытаюсь либо вернуть 1, либо 2. В другом методе, displayWinner(), мой код проверяет, возвращает ли isWinner 1 или два, и выводит другой текст в соответствии с тем, что возвращается isWinner ():

 public void displayWinner()
{
    if(isWin()==1)
    {
        System.out.println("n Player 1 wins...!!");
        isFull=true;
    }
    else if(isWin()==2)
    {
        System.out.println("n Player 2 wins...!!");
        isFull=true;
    }
    else
    {
        if(isFull)
        {
            System.out.println("It is a tie.");
        }

    }
}
  

Как мне вернуть 1 или 2? Каждый раз, когда я вызываю их, я получаю:

 $ javac TicTacToe.java
TicTacToe.java:113: error: method isWin in class TicTacToe cannot be 
applied to given types;
            if(isWin()==1)
               ^
required: int
found: no arguments
reason: actual and formal argument lists differ in length
TicTacToe.java:118: error: method isWin in class TicTacToe cannot be 
applied to given types;
            else if(isWin()==2)
                    ^
required: int
found: no arguments
reason: actual and formal argument lists differ in length 2 errors
  

Комментарии:

1. У вашего isWin метода есть параметр ( int именованный player ), но вы пытаетесь вызвать его без аргументов. Этот параметр вообще необходим? Похоже, что вы не используете его внутри метода…

2. Кроме того, у вас нет возвращаемого значения по умолчанию в isWin

Ответ №1:

Согласно вашему коду методу isWin (int player) требуется передача одного аргумента, однако при вызове вы не передаете аргумент этому методу. Вот почему вы получаете ошибку.

Итак, вместо вызова как isWin(), вызывайте следующим образом: isWin(1) или isWin(2)