Я сделал эту программу, но когда я ввожу значение, не сообщаю, Вы падаете в бесконечный локон. Как я могу делать для того, чтобы Вы вышли из локона, прося число снова?
public class Prubea1 {
public static final int MINIM_NUM = 1;
public static final int MAXIM_NUM = 15;
public static void main(String[] args) {
int numero = 0;
Scanner scan = new Scanner(System.in);
//modifico boolean dadaCorrecta a false para que entre el dato
boolean dadaCorrecta = false;
boolean numeroCorrecte = false;
while (!numeroCorrecte) {
System.out.print("Entra un valor entre 1 - 15: ");
dadaCorrecta = scan.hasNextInt();
if (dadaCorrecta) {
numero = scan.nextInt();
// pongo dadaCorrecta a false puesto que aun no ha entrado.
dadaCorrecta = false;
if ((numero < 1) || (numero > 15)) {
System.out.print("vuelva a introducirlo");
dadaCorrecta = true;
} else {
numeroCorrecte = true;
}
} else {
System.out.println("dada incorrecta, te que ser un sencer, torni a introduir un numero");
}
}
if ((numero >= 1) && (numero <= 15)) {
System.out.println("ho has encertat");
System.out.println("Correcto");
dadaCorrecta = true;
}
}
}
Проблема состоит в том, что, если не было введено в компьютер целое число, никогда ты не звонишь в
numero = scan.nextInt();
Тогда, всегда он будет пробовать читать ту же неправильную стоимость, когда он будет пробовать:
dadaCorrecta = scan.hasNextInt();
Объясненный с немного больше детали: Какой изюм, если была введена в компьютер стоимость, которая не целое число?
dadaCorrecta = scan.hasNextInt();
иdadaCorrecta
он будет фальшивымif (dadaCorrecta) {
пойди вelse {
и напечатай на экране- Следующее повторение цикла,
напечатай"Entra un valor..."
dadaCorrecta = scan.hasNextInt();
иdadaCorrecta
он будет фальшивым, потому что он спрашивает на той же линии, что только чтоЭто то же самое, что и шаг 1... Видно, как никогда он не выходит из цикла?
Если он неправильный, ты был бы должен читать стоимость отказываться от этого с:
scan.next();
И так позволять, что он прочитал следующую линию, введенную в компьютер пользователем
Начиная с этого, следующего раза, который называется в:
dadaCorrecta = scan.hasNextInt();
он будет спрашивать из-за следующей линии.
public class Prubea1 {
public static final int MINIM_NUM = 1;
public static final int MAXIM_NUM = 15;
public static void main(String[] args) {
int numero = 0;
Scanner scan = new Scanner(System.in);
//modifico boolean dadaCorrecta a false para que entre el dato
boolean dadaCorrecta = false;
boolean numeroCorrecte = false;
while (!numeroCorrecte) {
System.out.print("Entra un valor entre 1 - 15: ");
dadaCorrecta = scan.hasNextInt();
if (dadaCorrecta) {
numero = scan.nextInt();
// pongo dadaCorrecta a false puesto que aun no ha entrado.
dadaCorrecta = false;
if ((numero < 1) || (numero > 15)) {
System.out.print("vuelva a introducirlo");
dadaCorrecta = true;
} else {
numeroCorrecte = true;
}
} else {
System.out.println("dada incorrecta, te que ser un sencer, torni a introduir un numero");
scan.next(); // <------- Acá descartamos el valor incorrecto
}
}
if ((numero >= 1) && (numero <= 15)) {
System.out.println("ho has encertat");
System.out.println("Correcto");
dadaCorrecta = true;
}
}
}
String linea = scan.next();
... Пока ты не прочитал ее l и # 237; nea,scan.hasNextInt()
оставаться и # 225; refiri и # 233; ndose в ту же самую .scan.next()
сходный сscan.nextInt()
, но возвращает string вместо int. – Mariano 18.10.2016, 12:52Scanner.next()
прочитай и возврати pr и # 243; xima l и # 237; nea введенная в компьютер, или даже, если не неглинистый песчаник и # 243; ничто не блокирует программу до тех пор, пока не будет введена в компьютер одна l и # 237; nea. В этом случае, уже hab и # 237; во введенный в компьютер одна l и # 237; nea, но хочется происходить со следующей. – Mariano 18.10.2016, 13:35