2014-07-10 3 views
0
System.out.println("\n What is the chemical symbol for water\n 1.HO2 \n 2.H20 \n 3.OOH \n 4. O2H"); 
    b = input.nextInt(); 
    if (b==2) { 
     B=20; 
    } 
    else if (b != 2) { 
     B=0; 
    } 

    **total= A+B;** 
    switch (total) {  
     case 40: 
      System.out.println("WOW You scored 40/40, you sure know your science"); 
      break; 
     case 20: 
      System.out.println("Meh,20/40."); 
      break; 
     case 0: 
      System.out.println("0/40 Better luck next time!"); 
      break; 
    } 

Je crée une application de pratique mcq simple, qui évaluera son utilisateur en fonction du nombre de bonnes réponses. j'ai utilisé si donner les entiers 'A' et 'B' valeur selon réponse. mais il me donne l'erreur au total = A + B que A(A a été initialisé dans une version antérieure si la déclaration similaire à ce sujet) et B ont pas encore été initialisé. des solutions? veuillez m'excuser im un noobyInitialiser la valeur dans 'si' et l'utiliser dans l'erreur de code

+3

Java et Javascript sont des langages très différents. Êtes-vous réellement intéressé par Javascript ici? Si ce n'est pas le cas, modifiez votre publication pour supprimer la balise. –

Répondre

1

Initialiser B avant l'instruction if.

B = 0; 
    if (b==2) 
     B=20; 
    else if (!(b==2)) 
     B=0; 
    total= A+B; 

Bien sûr, si vous faites cela, vous n'avez pas besoin la partie else:

B = 0; 
    if (b==2) 
     B=20; 
    total= A+B; 
5

Le compilateur Java ne déterminera pas au moins un des corps if et else if exécuteront et que B sera initialisé, donc il pense que si les deux conditions échouent, alors B ne sera pas initialisé.

Vous vouliez que les conditions soient opposées, de sorte qu'une seule condition soit true, utilisez simplement else. Avec un else, au lieu d'un else if, le compilateur verra que B sera toujours initialisé au moment où vous l'utiliserez plus tard.

if (b==2) 
    B=20; 
else 
    B=0; 
+0

Juste par curiosité, y a-t-il des exemples de compilateurs capables de détecter des contraires logiques dans les structures if/elseif/else et de les gérer? –

Questions connexes