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