2016-05-24 7 views
2

Also arbeite ich an einem Programm, um einem Benutzer zu ermöglichen, Schüler der Klasse hinzuzufügen sowie ihre Noten zu verwalten und was nicht. Wenn ein Benutzer die erste Option in dem Menü auswählt, muss er eine ID (obligatorisch) eingeben, aber er könnte auch eine numerische Bewertung und/oder eine Buchstabennote hinzufügen. Aufgrund einer Rückmeldung in einem anderen Beitrag konnte ich eine String-Variable erstellen, die Benutzereingaben liest, dann prüft, ob es "S"/"s" ist (zu überspringen oder nicht) und den Wert entsprechend in double zerlegt. Jetzt aufbauend auf der Frage, Wie kann ich die Eingabeaufforderung überspringen und mit der nächsten Eingabeaufforderung fortfahren, wenn der Benutzer entscheidet, das Hinzufügen eines Ergebnisses zu überspringen? Ich habe versucht, Pause zu verwenden; aber es verlässt die gesamte Schleife. Gibt es eine Möglichkeit, die Frage für die Punktzahl zu überspringen und mit der Frage nach der Buchstabenklasse fortzufahren?Wie überspringe ich eine Eingabeaufforderung und fahre mit der nächsten fort, ohne die gesamte Schleife zu unterbrechen und zu beenden? Java

Ausgang:

1) hinzufügen Schüler der Klasse
2) aus der Klasse ein Schüler entfernen 3) Satz-Sorten für einen Studenten
4) Bearbeiten Sorten für einen Studenten
5) zeigen Klasse Bericht
6) Ausfahrt

freundlicher input id: freundlicher Eingangs Score: (s Enter überspringen)

freundlicher Eingangs Grad: (s Enter überspringen)

-Code

// Prompting the user for Score (Numerical Grade) 

System.out.println("Kindly input Score: (Enter s to Skip)"); 
// reading the input into the line variable of string datatype 
String line = input.nextLine(); 
// checking if line =="s" or =="S" to skip, otherwise 
// the value is parsed into a double 
if("s".equals(line) || "S".equals(line)) 
{ 
break; // this exists the loop. How can I just skip this requirement 
     //and go to the next prompt? 
}else try 
{ 
     score = Double.parseDouble(line);     
     System.out.println(score); 
} catch(NumberFormatException nfe) 
{ 

} 
// Prompting the user for Numerical Grade 
System.out.println("Kindly input Grade: (Enter s to Skip)"); 
String line2 = input.nextLine(); 
if("s".equals(line2) || "S".equals(line2)) 
{ 
     break; // this exists the loop. How can I just skip this 
     // requirement and go to the next prompt? 
}else try 
{ 
    score = Double.parseDouble(line2); 
    System.out.println(score); 
} catch(NumberFormatException nfe) 
{ 

} 

Antwort

3

einfach das Entfernen break:

if("s".equals(line) || "S".equals(line)) 
{ 
    // Don't need anything here. 
}else { 
    try 
    { 
     score = Double.parseDouble(line);     
     System.out.println(score); 
    } catch(NumberFormatException nfe) 
    { 
    } 
} 

Aber es ist besser, keinen leeren true Fall zu haben (oder vielmehr ist es unnötig):

if (!"s".equals(line) && !"S".equals(line)) { 
    try { 
    // ... 
    } catch (NumberFormatException nfe) {} 
} 

Sie können auch String.equalsIgnoreCase verwenden, um zu vermeiden "s" und "S" zu testen.

+1

Demorgans Gesetz in Aktion :) –

0

Verwenden Sie das Schlüsselwort continue. break wird die gesamte Schleife verlassen, während continue nur das nächste Ding überspringt.

+0

Dies ist nicht korrekt. 'continue' überspringt den Rest des Schleifenkörpers, während OP zur nächsten Eingabeaufforderung, die sich ebenfalls im Schleifenkörper befindet, wechseln möchte. –

+0

Mein schlechtes. In diesem Fall hört sich das so an, als würde er einfach 'if (!" S ".equalsIgnoreCase (line)) {// versuche hier eine Aussage}' – StrangeOne101

Verwandte Themen