【问题标题】:Else without if error in program, not sure what is wrong? [closed]否则程序中没有 if 错误,不知道是什么问题? [关闭]
【发布时间】:2014-02-13 13:03:16
【问题描述】:

我对java很陌生,试图从这本书中学习一门课程,但我一直在制作程序。一直告诉我 else without if 是一个错误,它找不到标记为 guessdigit1 & 2 的符号。

当我将鼠标悬停在符号旁边的错误对话框上时,它一直说guessdigit1 和2 是它们自己的类。任何想法? 谢谢!

package loterry;

import java.util.Scanner;

public class Loterry {
// This program creates two random numbers, and checks to see if your guess
    // makes the lottery win

    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter in your guess for loterry, two digits please");
        int lottery = (int)(Math.random()*100 /50);
        int guess = input.nextInt();
        int lotterydigit1= lottery /10;
        int lotterydigit2= lottery %10;

        // Get digits from guess
        int guessdigit1 = guess / 10;
        int guessdigit2 = guess % 10;

        System.out.println("The lottery number is " + lottery);

        if (guess == lottery)
            System.out.println("Exact Match: you win 10,000");
        else if (guessdigit2 == lotterydigit1 && guessdigit1 == lotterydigit2);
            System.out.println("Match all digits: you win 3,000");
        else if (guessdigit1 == lotterydigit1 
                     || guessdigit1 == lotterydigit2
                     || guessdigit2 == lotterydigit2
                     || guessdigit2 == lotterydigit2)
                  System.out.println("match one digit: you win 1,000");
                else
                  System.out.println("sorry no match");




    }
}

【问题讨论】:

    标签: java


    【解决方案1】:

    这是你的问题:

    else if (guessdigit2 == lotterydigit1 && guessdigit1 == lotterydigit2);
    

    去掉分号 (;)

    else if (guessdigit2 == lotterydigit1 && guessdigit1 == lotterydigit2)
    

    注意: 建议您始终在if else 语句中使用括号{ } 以避免将来出现任何可能的错误,当然是在Java code conventions . (有关大括号问题的说明,请参阅this answer

    else if (guessdigit2 == lotterydigit1 && guessdigit1 == lotterydigit2){
         System.out.println("Match all digits: you win 3,000");
    }
    

    【讨论】:

    • 我不知道我是怎么错过的...我确信 IntelliJ 会告诉我那里没有分号。 +1。
    • 使用大括号是避免此类错误的好方法
    • @RC。确实。我为此添加了一条注释
    • 啊,我明白了!谢谢!
    【解决方案2】:

    删除semicolon (;)以避免编译器错误

    在 if else 语句中使用curly braces "{ }" 块以避免混淆

    if (guess == lottery)
                System.out.println("Exact Match: you win 10,000");
            else if (guessdigit2 == lotterydigit1 && guessdigit1 == lotterydigit2); //->here
    

    【讨论】:

    • 详细说明-使用分号,您基本上是在说 else if 块已完成。您的下一行是 System.out... 是一个新语句,如果 else if (guessdigit1 == lotterydigit1... 是编译器抱怨的,则下一行。
    【解决方案3】:

    替换
    else if (guessdigit2 == lotterydigit1 && guessdigit1 == lotterydigit2);

    else if (guessdigit2 == lotterydigit1 && guessdigit1 == lotterydigit2)

    你应该在写if else时使用{}。它使clean codeclean code 易于调试。

    【讨论】:

      【解决方案4】:

      只需删除您放在第一个 elseif 末尾的分号 (;)。

      只有语句的末尾应该有分号(;)

      工作代码:

      public static void main(String[] args) {
          Scanner input = new Scanner(System.in);
          System.out.println("Enter in your guess for loterry, two digits please");
              int lottery = (int)(Math.random()*100 /50);
              int guess = input.nextInt();
              int lotterydigit1= lottery /10;
              int lotterydigit2= lottery %10;
      
              // Get digits from guess
              int guessdigit1 = guess / 10;
              int guessdigit2 = guess % 10;
      
              System.out.println("The lottery number is " + lottery);
      
              if (guess == lottery)
                  System.out.println("Exact Match: you win 10,000");
              else if (guessdigit2 == lotterydigit1 && guessdigit1 == lotterydigit2)
                  System.out.println("Match all digits: you win 3,000");
              else if (guessdigit1 == lotterydigit1 
                           || guessdigit1 == lotterydigit2
                           || guessdigit2 == lotterydigit2
                           || guessdigit2 == lotterydigit2)
                        System.out.println("match one digit: you win 1,000");
                      else
                        System.out.println("sorry no match");
      
      
      
      
          }
      

      【讨论】:

        【解决方案5】:

        是的,else if 语句后面的分号让您感到困惑。但是说真的,尽管我建议您将来使用方括号...它使代码看起来更整洁,从而更容易跟踪事物...相信我,在处理较大的程序或在小组中工作时,它确实很有帮助.

        【讨论】:

          【解决方案6】:

          在 if 条件后删除 ; 并在每个语句中使用 {}

          请看这里docs

               if (guess == lottery){
          //code here
          
          }
          
                  else if (guessdigit2 == lotterydigit1 && guessdigit1 == lotterydigit2){
          //code here
          
          }
          
                  else if (guessdigit1 == lotterydigit1 
                               || guessdigit1 == lotterydigit2
                               || guessdigit2 == lotterydigit2
                               || guessdigit2 == lotterydigit2){
          //code here
          
          }
          
                          else{
          //code here
          
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-05
            • 2011-11-10
            • 2014-04-10
            • 2013-03-13
            • 1970-01-01
            • 1970-01-01
            • 2021-09-04
            • 2018-12-19
            相关资源
            最近更新 更多