2010-05-01 5 views
0

Je viens tout juste d'apprendre les bases de la programmation Java. En utilisant un livre intitulé "Programmation de jeux vidéo pour le mal du génie".Début d'expression illégal

J'ai eu une erreur de début d'expression illégale dont je ne peux pas me débarrasser pour la vie. J'ai vérifié l'exemple de code du livre et le mien est identique.

L'erreur provient du pour la ligne (int i = difficulté; i> = 0; i- -).

Merci d'avoir aidé un débutant à sortir.

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

Quel IDE utilisez-vous? –

+0

L'EDI NetBeans version 6.8 – Kraivyne

+1

Ensuite, vous pouvez appuyer sur Alt-Maj-F Formater votre code. La programmation devient facile alors. –

Répondre

5

Vous avez accidentellement introduit un espace, en séparant le -- (JLS 15.14.3 Postfix decrement operator) en deux jetons - -. C'est ce qui a provoqué l'erreur de syntaxe. Par ailleurs, si ce code tel qu'il est écrit est presque identique à ce qu'il y a dans le livre, alors je suggère de prendre un autre livre. Ce code est horriblement écrit. Les if-else sont inefficaces: le troisième cas et au-delà sont inaccessibles.

Regardons aussi ce code:

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

Alors ... nous voulons un int aléatoire entre 0..3? Pourquoi ne pas utiliser java.util.Random.nextInt(int n)? Pour ne pas mentionner, si nous allons switch (JLS 14.11) sur sign, n'avons-nous pas besoin de 5 valeurs différentes au lieu de 4? Puisqu'il y a 5 opérateurs?

Et ce sont juste les erreurs logiques évidentes. Il y a aussi beaucoup de problèmes stylistiques avec le code.

Horrible livre.

+2

+1 pour les deux dernières phrases! –

+0

Ceci est exactement mot pour mot comment il est écrit dans le livre. C'est en fait la raison pour laquelle cela m'a donné une erreur. J'ai pris ce livre parce que j'ai lu des critiques en ligne qui ont indiqué que c'était bon pour un débutant. Malheureusement, au fur et à mesure que je le traverse, il me semble trouver de plus en plus d'erreurs. – Kraivyne

1

Avez-vous essayé i-- au lieu de i- -.

Il semble y avoir un espace supplémentaire.

+0

Merci! Ouais cela a arrangé, pour une raison quelconque dans le livre où jamais - est indiqué son montré avec un espace entre les deux - signes. Pourtant ++ est toujours listé ensemble. – Kraivyne

+0

@Kraivyne - encore une autre raison de vider le livre. De toute évidence, il n'a pas été copié correctement. –

Questions connexes