非法开始表达

时间:2010-05-01 09:58:33

标签: 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);

} }

2 个答案:

答案 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)

更不用说,如果我们要在switchsignJLS 14.11),我们不需要5个不同的值而不是4个吗?既然有5个运营商?

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

可怕的书。

答案 1 :(得分:1)

您是否尝试过i--而不是i- -

似乎有一个额外的空间。