[Java] Recevoir une entrée standard tout en effectuant des vérifications numériques, etc.

[Java] Recevoir une entrée standard tout en effectuant des vérifications numériques, etc.

1


while(true) {
	//Contrôle numérique
	while(true) {
		if(sc.hasNextInt()) {
			a = sc.nextInt();
			break;
		}else {
			System.out.println("Veuillez saisir à nouveau le numéro");
			sc.next();
		}
	}
	//Vérification de l'état
	if(a >= 0) {
		break;
	}else {
		System.out.println("Veuillez saisir à nouveau le numéro");
	}
}

2 (bot)


public static int check(Scanner sc) {
	int a = 0;
	while (true) {
        //Contrôle numérique et contrôle de l'état(Impossible)
		if (sc.hasNextInt() && a >= 0) {
			a = sc.nextInt();
			System.out.println("Le numéro saisi est:" + a);
			break;
		} else {
			System.out.println("Veuillez saisir à nouveau le numéro");
			sc.next();
		}
	}
	return a;
}

Celui ci est mieux! Si vous en avez, s'il vous plaît!

3 (@shiracamus m'a donné un code pratique)


import java.util.Scanner;
import java.util.function.Function;

public class ValidatingInput {
    //(Mémo personnel)Function<T, R>Méthode abstraite. Prend un argument de type Integer et renvoie une valeur de type Boolean.
    public static int inputInteger(Scanner sc, Function<Integer, Boolean> isValid) {
        while (true) {
            System.out.print("Veuillez saisir un nombre: ");
            System.out.flush();
            if (sc.hasNextInt()) {
                int value = sc.nextInt();

                //(Mémo personnel)La vérification de l'état par reçu estValide
                if (isValid.apply(value)) {
                    return value;
                }
                System.out.println("C'est un nombre en dehors de la plage.");
            } else {
                System.out.println("Ce n'est pas une valeur numérique.");
                sc.next();
            }
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        //(Mémo personnel)Passer la condition en argument
        int a = inputInteger(sc, value -> value >= 0);
        System.out.println("Le numéro saisi est:" + a);
    }
}

Tous les commentaires seront ajoutés ultérieurement sous forme de notes personnelles.

Function<T, R> apply(T)C'était la première fois que je touchais, mais "[java.util.fonction Le mémo d'utilisation de l'interface de fonction suivant](https://qiita.com/opengl-8080/items/22c4405a38127ed86a31)J'ai pu le comprendre en référence à.


 Merci, shiracamus.


Recommended Posts

[Java] Recevoir une entrée standard tout en effectuant des vérifications numériques, etc.
Lire l'entrée standard en Java
Histoire de paiza.jp [solution d'entrée standard Java]
Recevoir une entrée de joystick dans Java LW JFL
[ruby] Comment recevoir la valeur de l'entrée standard?