2013-08-17 1 views
0

J'écris un programme sur la recherche du nombre premier et j'ai rencontré une erreur de syntaxe 'erreur de syntaxe, insérer} pour terminer le bloc' quand j'ai ajouté le 'else if'.étrange Erreur de syntaxe, Insérer} pour terminer le bloc

J'ai marqué en astérisques où j'obtiens l'erreur.

import java.math.*; 

public class FindThePrime { 

    public static void main(String[] args) { 

     int x = 2; 
     int nextPrime = 1; 
     for (int i = 1; i <= 10; ++i){ 



     int count = 0; 

     while (nextPrime > x);{ 

      if (nextPrime % x == 0);{ 


       ++nextPrime; 
       x = 2; 
       ++count; 

      } 
      if (nextPrime < x); { 
       ++x; 
      } 
     ***}*** 



    } 
     else if{ 

     } 
    } 

} 

Je lis d'autres rapports du même problème et les ne sont pas d'aide. J'ai compté le nombre de {&} et ils viennent à un nombre pair.

Des suggestions?

p.s .: Ce projet est loin d'être complet alors pardonnez la rudesse de celui-ci. Aussi, ne me dites pas comment obtenir les résultats que je veux, je ne veux pas gâcher le défi!

+0

Vous ne voulez pas un point-virgule entre ')' et '' {. Ceci: 'if (cond); {blah} 'est une instruction' if' qui ne contrôle rien suivie d'un bloc inconditionnel. Ceci: 'if (cond) {blah}' est une instruction 'if' qui contrôle' {blah} '. –

+0

Utilisez un IDE (Eclipse Intellij IDEA ou netbeans) si vous trouvez un codage difficile sur CLI. Vous avez des options d'indentation ou de reformatage qui indenteront directement le code pour vous. S'il n'y a pas d'indentation appropriée, vous vous tromperez demain sur le code que vous avez écrit aujourd'hui. –

Répondre

0

Votre autre si doit être directement après le si. En ce moment, vous dites alors {faire des choses} elseif {faire d'autres choses}

Donc, essayez

 if (nextPrime < x) { 
      ++x; 
     } 
     else if { 

     } 

également si vous utilisez Eclipse vous pouvez utiliser CTRL-MAJ-F pour formater le code (si n'a pas d'erreurs). Cela peut vraiment aider à résoudre les problèmes d'imbrication.

Plus important encore, vous avez; après le moment et le si. UNE ; indique que la commande n'inclura pas {} s, donc vous voulez supprimer le;

Par exemple si (1 == 1); bouclera pour toujours.

0

import java.math. *;

FindThePrime public class {

public static void main(String[] args) { 

    int x = 2; 
    int nextPrime = 1; 
    for (int i = 1; i <= 10; ++i) 
    { 
     int count = 0; 
     while (nextPrime > x) 
     { 
     if (nextPrime % x == 0) 
     { 
      ++nextPrime; 
      x = 2; 
      ++count; 
      } 
      if (nextPrime < x) { 
      ++x; 
      } 
      else { 
       System.out.println("foo"); 
      } 

    } //while loop 

    }//for loop 
}//main 

}

Questions connexes