java - 验证来自添加到数组中的扫描仪的用户输入

标签 java arrays arraylist java.util.scanner

我正在创建一个考试程序,测试答案存储在一个数组中,用户的答案存储在一个单独的数组中。

我正在尝试编写我的程序,以便在每个问题之后将用户的答案加载到数组中,除非他们输入的不是“A”、“B” "、"C"或 "D"。如果他们没有输入这些值之一,那么将再次询问该问题。我很困惑。

这是我的代码:

String[] testAnswers = {"B","D","A","A","C","A","B","A","C","D"};
int uT = testAnswers.length; 
String[] userAnswers = new String[uT];

for (int i=0; i<uT;i++) {
System.out.print("Question #"+(i+1)+": ");

userAnswers[i] = in.nextLine();
userAnswers[i] = userAnswers[i].toUpperCase();

}

我尝试创建一个数组列表,然后使用 if 循环再次询问 Q。问题是我对 ArrayLists 不是很熟悉。

for (int i=0; i<uT;i++) {
    System.out.print("Question #"+(i+1)+": ");
    userAnswers[i] = in.nextLine();
    userAnswers[i] = userAnswers[i].toUpperCase();


    List<String> list = Arrays.asList(userAnswers);
    while (!list.contains("A") || !list.contains("B") || !list.contains("C") 
    || !list.contains("D")) {
    System.out.println("Invalid Input. ");
    System.out.print("Question #"+(i+1)+": ");
    userAnswers[i] = in.nextLine();
    userAnswers[i] = userAnswers[i].toUpperCase();
    }
}

我尝试过的另一件事是使用 boolean 变量和/或使用 do/while 循环,但我似乎无法弄清楚该怎么做。我认为是因为我将 userInput 直接放入数组中才破坏了我的代码。

boolean isValid = true;
do {
    for (int i=0; i<uT;i++) {
        System.out.print("Question #"+(i+1)+": ");
        isValid = false;
        userAnswers[i] = in.nextLine();
        userAnswers[i] = userAnswers[i].toUpperCase();
    try {
    //something here
    }
...

最佳答案

使用 while 循环,仅在输入正确时递增

String[] testAnswers = {"B","D","A","A","C","A","B","A","C","D"};
int uT = testAnswers.length; 
String[] userAnswers = new String[uT];

int i = 0;
while(i<uT) {
    System.out.print("Question #"+(i+1)+": ");

    String input = in.nextLine();
    input = input.toUpperCase();
    if (input.equals ("A") || input.equals ("B") ...) {
        userAnswers[i] = input;
        i++;
    }
    else {
        System.out.println ("Enter again");
    }

}

关于java - 验证来自添加到数组中的扫描仪的用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52846441/

相关文章:

Java FileOutputStream - 如何使文件大小立即显示在文件系统上

javascript - 在无状态组件中将 props id 绑定(bind)到 onClick

c# - 从存储过程结果集中填充 ArrayList

java - OnTouchListener 没有被解雇

java - 编写一个每分钟执行不同操作的方法

arrays - 如何在 Ruby 中找到哈希数组的平均值

将一段字符数组更改为C中的整数数组

java - 图书馆系统查询

java - 使用另一个类的 getter 方法中的值

java - 如何在 Java 中比较字符串?