否则,如果在程序中出现错误,不知道哪里出了什么问题?
我对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");
}
更换else if (guessdigit2 == lotterydigit1 && guessdigit1 == lotterydigit2);
与
else if (guessdigit2 == lotterydigit1 && guessdigit1 == lotterydigit2)
虽然写if else
你应该使用{}
。它使得它clean code
和clean 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
用分号详细说明,你基本上是在说别的,如果块已经完成。你的下一行是'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
}
我不知道我怎么错过了...我想肯定的IntelliJ告诉我,有那里不是分号。 +1。 – Makoto
使用大括号是避免这种错误 – 2014-01-23 05:55:59
@RC的好方法。肯定。我加了一张关于那个 – Baby