Нелегальное начало выражения - PullRequest
0 голосов
/ 01 мая 2010

Я только начал изучать основы программирования на Java. Использование книги под названием «Программирование видеоигр для злого гения».

У меня произошла ошибка незаконного начала выражения, от которой я не могу избавиться. Я проверил образец кода из книги и мой идентичен.

Ошибка исходит от для (int i = трудность; 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 ]

5 голосов
/ 01 мая 2010

Вы случайно ввели пробел, разделяя -- ( JLS 15.14.3 Оператор уменьшения постфикса ) на два токена - -. Это и стало причиной синтаксической ошибки.

Кстати, если этот написанный код даже близок к тому, что написано в книге, тогда я предлагаю приобрести другую книгу. Этот код ужасно написан. if-else неэффективны: третий случай и последующие недоступны.

Давайте также посмотрим на этот код:

int sign = (int)(Math.round(Math.random()*3));

Итак ... нам нужен случайный int между 0..3? Почему бы не использовать java.util.Random.nextInt(int n)?

Не говоря уже о том, что если мы собираемся switch ( JLS 14.11 ) на sign, не нужно ли нам 5 разных значений вместо 4? Так как есть 5 операторов?

И это только очевидные логические ошибки. Есть много стилистических проблем с кодом.

Ужасная книга.

1 голос
/ 01 мая 2010

Вы пробовали i-- вместо i- -.

Кажется, есть дополнительный пробел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...