验证用户的整数输入?
问题描述:
我需要确保用户输入10到100之间的数字。如果他们不这样做,我希望他们输入一个新号码。星号之间是我的问题所在(我认为)。提前致谢。验证用户的整数输入?
import java.util.Scanner;
public class Duplicate
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int[] array = new int[5];
System.out.println("Enter 5 integers between 10 and 100 (inclusive):");
for (int i = 0; i < array.length; i++)
****if ((input.nextInt() <= 100) || (input.nextInt() >= 10))
{
array[i] = input.nextInt();
}
****else { System.out.print("Please enter a number greater than 9 and less than 101."); }
for (int i = 0; i < array.length; i++)
System.out.print(array[i] + ", ");
System.out.println();
System.out.println("Unique values are: ");
for (int i = 0; i < array.length; i++) {
boolean show = true;
for (int j = 0; j < i; j++)
if (array[j] == array[i]) {
show = false;
break;
}
if (show)
System.out.print(array[i] + ", ");
}
}
}
答
if ((input.nextInt() <= 100) || (input.nextInt() >= 10)) array[i] = input.nextInt();
要调用nextInt
三次读取接下来的三个整数。因此,如果用户输入5然后是150,则-1,这将与
if (5 <= 100 || 150 >= 10)
array[i] = -1;
相同,当它不应该成功时。
您同时还使用||
(或)而不是&&
(和),所以如果用户在上述问题得到修复后,进入1,它看起来像
if (1 <= 100 ||/* or */ 1 >= 10)
array[i] = 1;
其成功,因为1 <= 100
。
取而代之的是,只读一个int
并使用&&
。
int userEnteredInt = input.nextInt();
if (10 <= userEnteredInt && userEnteredInt <= 100)
array[i] = userEnteredInt;
+0
谢谢。我有一种感觉,这种说法可能是一个问题。我想我也不明白nextInt()是如何读取的。再次感谢。 – David
请了解如何缩进代码。不遵循标准指南并不聪明。 –