非法开始表达

Kra*_*yne 0 java

我刚刚开始学习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)

}}

pol*_*nts 5

你不小心引入了一个空格,将--(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个运营商?

这只是明显的逻辑错误.代码也存在许多风格问题.

可怕的书.