【问题标题】:error not a statement in If-else statement [closed]错误不是If-else语句中的语句[关闭]
【发布时间】:2013-11-20 13:45:43
【问题描述】:

我正在制作一个生成随机数的程序,你猜对了吗,然后告诉你猜对与否。代码是:

void guessNumber();
  {
    //Asks for guess of the number. Prints whether the guess is above or below randomNumber.
    Scanner reader = new Scanner(System.in);
    numberOfTries = 0;
    While(userGuess != randomNumber);
       System.out.println("Guess the number ");
       int userGuess = reader.nextLine();
       If (userGuess = randomNumber); {
          numberOfTries += 1;
         System.out.println("Correct! It took you " + numberOfTries + " tries to find my numnber");
       } Else; {
         distanceFromNumber = Math.abs(7);
         numberOfTries += 1;
         System.out.println("Incorrect! The number that you guessed is " + distanceFromNumber + "numbers away from my number ");
       }
  }

编译器返回“Else”部分不是语句。如果我从“If”和“Else”行中删除分号,编译器还会告诉我这两行需要一个';'。我也尝试更改括号的格式,但没有帮助。

【问题讨论】:

  • 不是别的就是别的
  • 而应该是同时
  • 少分号,少大写。 @Answers:只需做出一个好的答案,而不是 5 个不完整的答案。停止尝试互相比赛。
  • 我猜这不是你想要的……if (userGuess = randomNumber), if (userGuess == randomNumber) 是你想要的
  • @lordkain:不要通过编辑他的帖子来回答问题。

标签: java if-statement


【解决方案1】:

Else 应该小写,就像 Java 中的所有关键字一样,并且不应该以分号结尾

...
} else {
...

if() 或 while() 语句后也不应有分号,while() 语句后也不应有左括号,即

while(true)
{ //missing
}

总结和补充

void guessNumber() //EDIT removed semi-colon
  {
    //Asks for guess of the number. Prints whether the guess is above or below randomNumber.
    Scanner reader = new Scanner(System.in);
    numberOfTries = 0;
    while(userGuess != randomNumber) //EDIT removed semi-colon + lowercase while
    {//EDIT added this bracket
       System.out.println("Guess the number ");
       int userGuess = reader.nextLine();
       if (userGuess == randomNumber) {//EDIT removed semi colon, lowered case of 'If' & added double equals (equality testing and not assignment)
          numberOfTries += 1;
         System.out.println("Correct! It took you " + numberOfTries + " tries to find my numnber");
       } else { //EDIT removed semi-colon & changed case
         distanceFromNumber = Math.abs(7);
         numberOfTries += 1;
         System.out.println("Incorrect! The number that you guessed is " + distanceFromNumber + "numbers away from my number ");
       }
    }//EDIT Added this bracket
  }

【讨论】:

  • 请解决所有问题。指出它们并不难,但它会让事情变得清晰 - 您的编辑仍然包含 4 或 5 个问题。
  • void guessNumber(); 应该是void guessNumber()If 应该是if (userGuess = randomNumber) 必须是(userGuess == randomNumber) While 必须是while 发帖前请尝试检查两次答案:)
【解决方案2】:

你使用大写字母,特殊单词总是小写

void guessNumber()
  {
    //Asks for guess of the number. Prints whether the guess is above or below randomNumber.
    Scanner reader = new Scanner(System.in);
    numberOfTries = 0;
    while(userGuess != randomNumber);
       System.out.println("Guess the number ");
       int userGuess = reader.nextLine();
       if (userGuess = randomNumber) {
          numberOfTries += 1;
         System.out.println("Correct! It took you " + numberOfTries + " tries to find my numnber");
       } else {
         distanceFromNumber = Math.abs(7);
         numberOfTries += 1;
         System.out.println("Incorrect! The number that you guessed is " + distanceFromNumber + "numbers away from my number ");
       }
  }

【讨论】:

  • void guessNumber(); 应该是void guessNumber()
【解决方案3】:
  If (userGuess = randomNumber)

应该是

  If (userGuess == randomNumber)

【讨论】:

    【解决方案4】:

    所有java关键字都应该小写,所以;

    if
    else
    while
    

    此外,您使用 == 来问问题 is 某物等于其他东西,而不是 = which 设置 某物等于其他东西。

    所以

    while(condition){
        if (a==b){
    
        }else{
    
        }
    }
    

    【讨论】:

      【解决方案5】:

      java 中的关键字是小写的(whileifelse...)

      您还想删除whileifelse 行之后的;

      为了比较值,使用:

      if (userGuess == randomNumber) {
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-05
        • 1970-01-01
        • 1970-01-01
        • 2016-10-15
        • 2018-08-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多