1
while(true) {
//Numerische Prüfung
while(true) {
if(sc.hasNextInt()) {
a = sc.nextInt();
break;
}else {
System.out.println("Bitte geben Sie die Nummer erneut ein");
sc.next();
}
}
//Zustandsprüfung
if(a >= 0) {
break;
}else {
System.out.println("Bitte geben Sie die Nummer erneut ein");
}
}
public static int check(Scanner sc) {
int a = 0;
while (true) {
//Numerische Prüfung & Zustandsprüfung(Unmöglich)
if (sc.hasNextInt() && a >= 0) {
a = sc.nextInt();
System.out.println("Die eingegebene Nummer lautet:" + a);
break;
} else {
System.out.println("Bitte geben Sie die Nummer erneut ein");
sc.next();
}
}
return a;
}
Dieses hier ist besser! Wenn Sie welche haben, bitte!
import java.util.Scanner;
import java.util.function.Function;
public class ValidatingInput {
//(Persönliches Memo)Function<T, R>Abstrakte Methode. Nimmt ein Argument vom Typ Integer und gibt einen Wert vom Typ Boolean zurück.
public static int inputInteger(Scanner sc, Function<Integer, Boolean> isValid) {
while (true) {
System.out.print("Bitte gebe eine Nummer ein: ");
System.out.flush();
if (sc.hasNextInt()) {
int value = sc.nextInt();
//(Persönliches Memo)Zustandsprüfung durch empfangene isValid
if (isValid.apply(value)) {
return value;
}
System.out.println("Es ist eine Zahl außerhalb des Bereichs.");
} else {
System.out.println("Es ist kein numerischer Wert.");
sc.next();
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//(Persönliches Memo)Übergeben Sie die Bedingung als Argument
int a = inputInteger(sc, value -> value >= 0);
System.out.println("Die eingegebene Nummer lautet:" + a);
}
}
Alle Kommentare werden später als persönliche Notizen hinzugefügt.
Function<T, R> apply(T)Es war mein erstes Mal zu berühren, aber "[java.util.Funktion Das folgende Verwendungsprotokoll der Funktionsschnittstelle](https://qiita.com/opengl-8080/items/22c4405a38127ed86a31)Ich konnte es mit Bezug auf verstehen.
Danke, Shiracamus.
Recommended Posts