我刚开始学习Java编程的基础知识。使用一本名为“为邪恶的天才编程视频游戏”的书。
我有一个非法的表达开始错误,我不能为我的生活摆脱。我已经检查了书中的示例代码,但我的相同。
错误来自 for(int i = difficulty; i> = 0; i - - )行。
感谢您帮助新手。
import javax.swing.*;
public class S1P4
{public static void main(String[] args) throws Exception {
int difficulty;
difficulty = Integer.parseInt(JOptionPane.showInputDialog("How good are you?\n"+
"1 = Great\n"+"10 = Terrible"));
boolean cont = false;
do
{
cont = false;
double num1 = (int)(Math.round(Math.random()*10));
double num2;
do
{
num2 = (int)(Math.round(Math.random()*10));
}
while(num2==0.0);
int sign = (int)(Math.round(Math.random()*3));
double answer;
System.out.println("\n\n*****");
if(sign==0)
{
System.out.println(num1+" times "+num2);
answer = num1*num2;
}
else if(sign==1)
{
System.out.println(num1+" divided by"+num2);
answer = num1/num2;
}
else if(sign==1)
{
System.out.println(num1+" plus "+num2);
answer = num1+num2;
}
else if(sign==1)
{
System.out.println(num1+" minus "+num2);
answer = num1-num2;
}
else
{
System.out.println(num1+" % "+num2);
answer = num1%num2;
}
System.out.println("*****\n");
for(int i = difficulty; i >= 0; i- - )
{
System.out.println(i+"...");
Thread.sleep(500);
}
System.out.println("ANSWER: "+answer);
String again;
again = JOptionPane.showInputDialog("Play again?");
if(again.equals("yes"))
cont = true;
}
while(cont);
} }
答案 0 :(得分:5)
您不小心引入了一个空格,将--
(JLS 15.14.3 Postfix decrement operator)分隔为两个标记- -
。这是导致语法错误的原因。
顺便说一下,如果写的代码与书中的代码差不多,那么我建议另外写一本书。那段代码写得非常糟糕。 if-else
无效:第三种情况及其他情况无法实现。
让我们看一下这段代码:
int sign = (int)(Math.round(Math.random()*3));
所以...我们想要int
之间的随机0..3
?为什么不使用java.util.Random.nextInt(int n)
?
更不用说,如果我们要在switch
上sign
(JLS 14.11),我们不需要5个不同的值而不是4个吗?既然有5个运营商?
这就是明显的逻辑错误。代码也存在许多风格问题。
可怕的书。
答案 1 :(得分:1)
您是否尝试过i--
而不是i- -
。
似乎有一个额外的空间。