java - 在java中验证数组的多个输入

标签 java arrays java.util.scanner

我有一项涉及用户输入的家庭作业。

我想向用户询问 1-7 范围内的三个整数输入并将它们存储在一个数组中。

到目前为止,如果所有输入都超过 7,并且排除字符串等输入,但仍然允许单个输入超过 7,那么我到目前为止似乎可以正确验证。

感谢任何帮助。

    Scanner in = new Scanner(System.in);
    boolean valid = false;
    int[] inputRange = new int[3];
    while(!valid)
    {
        System.out.println("enter three numbers: ");
        if(in.hasNextInt())
        {
            for(int i = 0; i< inputRange.length; i++)
            {
                inputRange[i] = in.nextInt();
                if(inputRange[i] >= 1 && inputRange[i] <= 9){
                    valid = true;
                }
            }
        }else{
            in.next();
        }
    }

最佳答案

您的逻辑没问题,但每次用户要输入新数字时,您都需要将 valid 重新启动为 false。

以下是如何使用 do-while 验证用户输入是否在 1-9 之间,使用相同的逻辑,只是略有不同。

下次请务必发布有效的 MCVE而不仅仅是“片段”(它应该包括 main 方法和导入)

import java.util.Scanner;

public class ValidationOfNumbers {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        boolean valid = false;
        int[] inputRange = new int[3];
        int counter = 0;
        int number = 0;
        System.out.println("Enter 3 digits between 1-9"); //Ask for digits, numbers can have multiple digits, while digits are numbers from 0-9
        for (int i = 0; i < inputRange.length; i++) {
            valid = false; //Restart "valid" variable for each new user input
            do {
                number = in.nextInt();
                if (number >= 1 && number <= 9) {
                    valid = true; //If valid, it will exit do-while
                } else {
                    System.out.println("Enter a valid digit between 1-9");
                }
            } while (!valid);
            inputRange[i] = number; //We know it's valid because it went out of do-while, so we can now store it in the array
        }

        for (int i = 0; i < inputRange.length; i++) {
            System.out.println(inputRange[i]);
        }
    }
}

关于java - 在java中验证数组的多个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41573787/

相关文章:

java - Android Java 使图像向下移动

javascript - 将 FB 小时 json 对象转换为 json 对象数组

java - 使用扫描仪和异常读取文本文件中的整数并存储到数组

java - 显示一年中的最低平均价格,以及该价格的周数以及该价格发生的月份名称

python - 使用 F2PY 将数组从 Python 传递到 Fortran 结果错误=2(与形状相关)

java - 使用扫描仪读取单个字符

java - 从文本文件读取加权图

java - 在 IntelliJ 中创建存储库时,在 .gitignore 中包含什么是安全的

java - 每次启动计算机时都会出现一条对话框消息

java - 目标行 Javadoc