2016-08-16 5 views
0

Ich versuche, meinen Code durch Fehlerprüfung zu überprüfen. Ich möchte sicherstellen, dass die Ganzzahl, die Personen eingeben, keinen Buchstaben oder mehr enthält. Hier ist mein Code. Ich soll dieses Problem mit einem eindimensionalen Array lösen. Ich habe den Code funktioniert, aber ich habe Probleme mit dem Hinzufügen der Fehler beim Einchecken. Jede Hilfe wäre willkommen. DankWie überprüft man, ob ein Int einen Buchstaben enthält

public void getNumbers() { 
    Scanner keyboard = new Scanner(System.in); 

    int array[] = new int[5]; 
    int count = 0; 
    int entered = 0; 
    int k = -1; 

    while (entered < array.length) { 

     System.out.print("Enter a number "); 
     int number = keyboard.nextInt(); 

     if (10 <= number && number <= 100) { 

      boolean containsNumber = false; 

      entered++; 

      for (int i = 0; i < count; i++) { 
       if (number == array[i]) // i Or j 
       { 
        containsNumber = true; 
       } 
      } 
      if (!containsNumber) { 
       array[count] = number; 
       count++; 
      } else { 
       System.out.println(number + " has already been entered"); 
      } 
     } else { 
      System.out.println("number must be between 10 and 100"); 
     } 

     //what does %d do? 
     for (int j = 0; j < count; j++) { 
      System.out.printf("%d ", array[j]); 
     } 
     System.out.println(); 

    } 
} 

}

+0

Wenn eine Nicht-Ganzzahl eingegeben wird, wirft nextint() nicht eine inputmismatchexception? –

+0

überprüfen Sie Ihren Code lieber, ob der Wert bereits eingegeben wurde –

+0

ja, es löst eine Ausnahme aus. Ich glaube, mein Lehrer will nicht, dass ich eine Ausnahme habe. ein anderer Typ in meiner Klasse sagte, er habe es funktioniert mit hasNextInt – Stepsie94

Antwort

0

keyboard.nextInt() eine InputMismatchException, wenn Sie einen String werfen. Wenn Sie überprüfen möchten, ob Scanner eine ganze Zahl zum Lesen hat, können Sie keyboard.hasNextInt() verwenden.

Alternativ können Sie die Eingabe als String s = keyboard.next() lesen, die die Eingabe als String nehmen, und dann s.matches(".*\\d+.*") verwenden, um festzustellen, ob es nicht eine ganze Zahl ist.

UPDATE: Um Fragen zu beantworten - keyboard.hasNextInt() wird eine boolean zurückgegeben. So könnte zum Beispiel nach System.out.print("Enter a number") eine if Anweisung überprüft werden, um zu sehen, ob keyboard numerische Eingaben empfangen kann, dh. if(keyboard.hasNextInt). Wenn dies zutrifft, bedeutet dies, dass der Benutzer eine numerische Eingabe eingegeben hat, und Sie können fortfahren, int number = keyboard.nextInt() zu sagen. Wenn es falsch ist, würden Sie wissen, dass die Benutzereingabe nicht numerisch ist.

+0

Ich habe es schwer, die Tastatur.hasNextInt() in meinen Code zu setzen. Mache ich eine if-Aussage? – Stepsie94

+0

@ Stepsie94 Ich habe meine Antwort bearbeitet (hoffentlich). – AlterV

2

Ich gehe davon aus, dass Sie möchten, dass Ihr Programm den Benutzer auffordert, eine Nummer erneut einzugeben, wenn sie beim ersten Mal keine Nummer eingeben. In diesem Szenario möchten Sie vielleicht etwas entlang der Linien von dieser versuchen:

Scanner sc = new Scanner(System.in); 
System.out.println("Enter a number: "); 
while(!sc.hasNextInt()) { 
    //print some error statement 
    sc.nextLine(); 
} 
int number = sc.nextInt(); 
System.out.println("Number is: " + number); // to show the value of number 
// continue using number however you wish 

Da hasNextInt() gibt einen Booleschen Bestimmung, ob die Eingabe eine ganze Zahl, wird das Programm nie in die Schleife, bis das Programm verlassen können Bestätigen Sie, dass der Benutzer eine Ganzzahl eingegeben hat.

Verwandte Themen