[Java] Empfangen Sie Standardeingaben, während Sie numerische Überprüfungen usw. durchführen.

[Java] Empfangen Sie Standardeingaben, während Sie numerische Überprüfungen usw. durchführen.

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");
	}
}

2 (Bot)


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!

3 (@shiracamus gab mir einen praktischen Code)


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

[Java] Empfangen Sie Standardeingaben, während Sie numerische Überprüfungen usw. durchführen.
Lesen Sie die Standardeingabe in Java
Geschichte von paiza.jp [Java Standard Input Solution]
Empfangen Sie Joystick-Eingaben in Java LW JFL
[Ruby] Wie erhalte ich den Wert von der Standardeingabe?