2017-02-19 6 views
-1

Ich mache einfaches Programm, wo der Benutzer eine Klassennummer eines Schülers (CN) und die Note dieses Schülers (ngrade) eingibt. Ich habe versucht, eine Ausnahme hinzuzufügen, die überprüft, ob die Eingabe von cn und ngrade Ganzzahlen sind. Wenn nicht, wird der Benutzer darüber informiert, dass es ungültig ist und bittet darum, die Details erneut einzugeben.Check-Schleife, wenn Eingabe alle ganzzahlig sind

Problem: Ich habe While-Schleife verwendet, um die Eingaben in der Schleife zu überprüfen. aber ich bekomme eine Endlosschleife.

Code:

import java.io.*; 
import java.util.*; 

public class trrying { 

    public static void main(String[] args) { 
     int ngrade; 
     int cn; 
     int A = 0, B = 0, C = 0, D = 0, E = 0; 
     boolean test = false; 
     Scanner sn = new Scanner(System.in); 

     while (!test) { 
      try { 
       for (int i = 0; i <= 2; i++) { 

        System.out.println("Enter class number: "); 
        cn = sn.nextInt(); 
        System.out.println("Enter numeric grade: "); 
        ngrade = sn.nextInt(); 
        System.out.println("Letter Grade: "); 

        if (ngrade >= 90) { 
         A++; 
         System.out.println("A"); 
        } else { 
         System.out.println("HELLO"); 
        } 

        test = true; 

       } 
       test = false; 
      } catch (Exception e) { 
       System.out.println("ERROR! "); 
       // System.out.println("Enter class number: "); 

      } 

     } 
    } 
} 
+0

Verwandte: [Validieren Eingang mit java.util.Scanner] (http://stackoverflow.com/questions/3059333/validating-input-using-java-util-scanner) [Wie Scanner verwenden, um accept nur gültig int als Eingabe] (http://stackoverflow.com/questions/2912817/how-to-use-scanner-to-accept-only-valid-int-as-input) – Pshemo

Antwort

-2

Eine Möglichkeit, das Verhalten, das Sie erhalten möchten in jedem Eingang als String zu lesen wäre, mit Scanner#nextLine(), und dann versuchen, manuell, dass die Eingabe als eine ganze Zahl zu analysieren. Wenn dies erfolgreich ist, akzeptiere diese Eingabe und fahre mit deiner Logik fort. Wenn dies nicht erfolgreich ist, fangen Sie die Ausnahme ab und wiederholen Sie die Schleife, um eine weitere Benutzereingabe zu erhalten.

for (int i=0; i <= 2; i++) { 
    String line = ""; 
    while (true) { 
     System.out.println("Enter class number: "); 
     line = sn.nextLine(); 
     try { 
      cn = Integer.parseInt(line); 
      break; 
     } catch(Exception e) { 
      System.out.println("Enter class number as an integer only."); 
     } 
    } 
    while (true) { 
     System.out.println("Enter numeric grade: "); 
     line = sn.nextLine(); 
     try { 
      ngrade = Integer.parseInt(line); 
      break; 
     } catch(Exception e) { 
      System.out.println("Enter numeric grade as an integer only."); 
     } 
    } 

    System.out.println("Letter Grade: "); 

    if (ngrade >= 90) { 
     System.out.println("A"); 
    }   
    else { 
     System.out.println("HELLO"); 
    } 

    test = true; 
} 
+0

Hinweis: Ich fing an, diese Antwort zu schreiben bevor es als Duplikat markiert wurde. Ich werde diese Antwort hier lassen, damit das OP einen Weg sehen kann, dieses Problem zu lösen. –

+0

Bitte beachten Sie, dass Sie erklärenden Text hinzufügen und es zu einem Community-Wiki machen. –

+0

Wenn Sie die Antwort bearbeiten, sehen Sie ein Kontrollkästchen, das genau das tut. Es sollte ziemlich einfach zu finden sein. –

Verwandte Themen