用户输入的无效值再次要求放入数组

  • 本文关键字:数组 无效 用户 java arrays
  • 更新时间 :
  • 英文 :

Scanner scanner = new Scanner(System.in);
int grade[] = new int[3];
for (int i = 0; i < grade.length; i++) {
System.out.println("Enter your test score:");
grade[i] = scanner.nextInt();
}

我一直在努力弄清楚如何使它,所以如果用户输入低于0或高于100,它会再次询问。我对Java很陌生,这是我学习的第一门语言。如有任何建议,我将不胜感激。我需要使用Do -while循环而不是for循环吗?或者在for循环中实现if语句?

您可以通过将if块放入for循环中来验证输入。

但是,由于循环只执行三次,因此只有在用户输入正确或没有输入时才应该更改增量条件。你也可以在这里使用while循环。

下面是一些示例代码:
for (int i = 0; i < grade.length; i++) 
{
System.out.println("Enter your test score:");

if(grade[i] < 0 || grade > 100)
{
i--;
continue;
}
grade[i] = scanner.nextInt();
}

if块将检查输入是否超出边界,减少i并重新启动循环。

我的建议是,您可以在if条件中增加值,而不是在循环中增加I。像下面,

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int grade[] = new int[3];
for (int i = 0; i < grade.length;) {
System.out.println("Enter your test score:");
int temp = scanner.nextInt();
if (temp >= 0 && temp <= 100) {
grade[i] = temp;
i++;
}else {
System.out.println("Please enter valid score");
}
}
scanner.close();
}

这基本上是从用户那里获取一个输入值,如果该值大于或等于0 &&小于或等于100,然后将其添加到Array中并增加循环计数(我们可以称之为数组索引值),否则打印请求有效输入的消息。

与其将验证逻辑塞进循环的某个地方,还可以编写一个小的实用程序方法,它巧妙地请求有效的输入,并继续这样做,直到用户最终输入有效的内容:

int promptInt(Scanner scanner, int min, int max, String errorMessage) {
while (true) {
int input = scanner.nextInt();
if (min <= input && input <= max) {
return input;
}
else {
System.out.println(errorMessage);
}
}
}

然后可以简化循环:

int grade[] = new int[3];
for (int i = 0; i < grade.length; i++) {
System.out.println("Enter your test score:");
grade[i] = promptInt(0, 100, "Please enter a valid number");
}

最新更新