我刚刚开始学习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);
Run Code Online (Sandbox Code Playgroud)
}}
你不小心引入了一个空格,将--(JLS 15.14.3 Postfix减量运算符)分成两个标记- -.这是导致语法错误的原因.
顺便说一句,如果编写的代码与书中的代码非常接近,那么我建议另外写一本书.那段代码写得非常糟糕.将if-else是无效的:第三种情况及以后不可达.
我们还来看看这段代码:
int sign = (int)(Math.round(Math.random()*3));
Run Code Online (Sandbox Code Playgroud)
所以......我们希望有一个随机int之间0..3?为什么不用java.util.Random.nextInt(int n)?
更不用说,如果我们要switch(JLS 14.11)sign,我们不需要5个不同的值而不是4个吗?既然有5个运营商?
这只是明显的逻辑错误.代码也存在许多风格问题.
可怕的书.