Dieser Code versucht, Schlüssel vom Benutzer zu akzeptieren und sie in einem Array von Zeichenfolgedaten zu speichern. Später im Programm wird der Wert für jede Taste in einem bestimmten Format angezeigt.Wie kann ich diese Schleife verlassen?
Erstens möchte ich diese Schleife zu beenden/beenden, wenn die Benutzereingabe leer/nextline ist. Ich möchte kein EOF-Zeichen oder eine Zeichenfolge verwenden, um die Schleife zu verlassen.
Ich habe einige Suche nach früheren SO Fragen/Lösungen, aber nicht in meinem Fall funktioniert. Brauchen Sie Hilfe, dieses Problem oder andere Alternativen zu lösen, sind sehr willkommen.
Vielen Dank im Voraus!
class DictionaryAndMap{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int len = sc.nextInt();
Map<String, Integer> mp = new HashMap<String, Integer>();
String name;
int phone;
for(int i=0; i<len; i++){
name = sc.next();
phone = sc.nextInt();
mp.put(name, phone);
}
int i=0;
String arr1[] = new String[10];
String nam;
// I couldn't exit out of this loop
while(sc.hasNext()){
nam = sc.next();
if(nam!=null && !nam.trim().isEmpty()){
arr1[i] = nam;
i++;
}
else{
break;
}
}
// iterating through the array to find the search inputs
for(String j: arr1){
if(mp.containsKey(arr1[j])){
System.out.println(j+"="+mp.get(j));
}else{
System.out.println("Not found");
}
}
}
}
P.S. Der Wert hasNext() ändert sich nicht in false, auch wenn die Eingabe leer ist/null/"", daher endet die while-Schleife niemals. Wie kann ich sicherstellen, dass hasNext() eines dieser leeren Eingabedaten erkennt und daher aus der Schleife austreten kann?
Die 'else if'-Anweisung ist redundant. Es wird immer "wahr" sein, wenn das erste "if" "falsch" ist. – 4castle
http://StackOverflow.com/a/10490358/7187887 –
Ich bin auf diesen Thread gestoßen, aber gibt es keine andere Lösung als die EOF-Anweisung? Gibt es eine Möglichkeit, dass ich zumindest \ n durch Benutzereingaben oder ähnliches verfolgen kann? – Akhil