否则,如果在程序中出现错误,不知道哪里出了什么问题?

问题描述:

我对Java非常陌生,试图从这本书中学习一门课程,并且我坚持制作一个程序。如果是错误,并且它不能找到标记为guessdigit1的符号,请不要告诉我。否则,如果在程序中出现错误,不知道哪里出了什么问题?

当我将鼠标悬停在符号旁边的错误对话框上时,它总是说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"); 




    } 
} 

这里是你的问题:

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"); 
} 
+1

我不知道我怎么错过了...我想肯定的IntelliJ告诉我,有那里不是分号。 +1。 – Makoto

+0

使用大括号是避免这种错误 – 2014-01-23 05:55:59

+0

@RC的好方法。肯定。我加了一张关于那个 – Baby

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

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

虽然写if else你应该使用{}。它使得它clean codeclean code很容易调试。

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

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

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

用分号详细说明,你基本上是在说别的,如果块已经完成。你的下一行是'System.out ...'是一个新的语句,如果else else(guessdigit1 == lotterydigit1 ...是编译器正在抱怨的话)。 – ansible

只需删除分号;您已放在最后()你的第一个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"); 




    } 

呀之后其他事物分号if语句是什么搞乱您:在其结束

工作守则;

只有语句应该有分号(;)。但是,尽管我会建议你在未来使用括号......这使得代码看起来更整齐,从而更容易跟踪事物......相信我,它在处理更大的程序或在一个组中工作时确实有帮助。

只是remome ;如果条件和使用{}每个语句后

看到这里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 

}