如何读取数组中的char输入?

时间:2016-03-16 06:02:17

标签: java arrays char

我正在编写一个程序,其中包括设计一个多选测试分级器。我声明了一个数组来存储响应。我遇到的问题是,我不知道如何阅读每个用户输入(字符)以查看它是否正确。我的代码只是一个占位符。我无法弄清楚要做什么。这是我的代码片段:

for (int a = 0 ; a < response.length ; a++)
{
    System.out.print((a + 1) + ": ");
    Scanner s = new Scanner(System.in);
    response [a] = System.in.read();
    while (response [a] < 'A' || response [a] > 'D')
    {
        System.out.println ("Invalid input. Enter answers with A, B, C, or D only!");
        response [a] = System.in.read();
    }
}

2 个答案:

答案 0 :(得分:1)

我不完全确定你想要达到的目标,所以我将为我的答案做一些假设:

用户在每次回答后点击回车键,如果这是多项选择测试,这对我来说很自然。

您将知道正确答案,只需检查输入是否正确。

char [] correctAnswers = {'A', 'B', 'C', 'A'};
Scanner in = new Scanner(System.in);

for(int i = 0; i < correctAnswers; i ++){
    System.out.println("Please input answer:");
    String valueString = in.nextLine().toUpperCase();
    if(valueString.length() != 1){
        System.out.println("Answer invalid. Please only type one character");
        i--;
    } else {
        char answer = valueString.charAt(0);
        if(correctAnswers[i] == answer)
            System.out.println("Correct");
        else
            System.out.println("Wrong");
    }
}

这个样本应该可以解决问题。

<强>替代

如果用户要输入他的所有答案然后按回车键,您可以按如下方式访问每个字符:

char [] correctAnswers = {'A', 'B', 'C', 'A'};
Scanner in = new Scanner(System.in);
System.out.println("Please input " + correctAnswers.length + " answer(s):");
String answerString = in.nextLine().toUpperCase();

if(answerString.length() != correctAnswers.length){
    System.out.println("Incorrect number of answers entered");
} else {
    for(int i = 0; i < answerString.length; i ++){
        if(correctAnswers[i] == answerString.charAt(i)){
            System.out.println("Answer " + (i + 1) + " Correct");
        } else {
            System.out.println("Answer " + (i + 1) + " Wrong");
        }
        count ++;
    }
}

答案 1 :(得分:0)

我不清楚您打算如何阅读输入,但如果您希望用户输入每个问题的答案,您可以修改以下代码

    for (int a = 0 ; a < response.length ; a++)
        {
            System.out.print((a + 1) + ": ");
            Scanner s = new Scanner(System.in);
            response [a] = s.next();
            while (response [a] < 'A' || response [a] > 'D')
            {
                System.out.println ("Invalid input. Enter answers with A, B, C, or D only!");
                response [a] = s.next().charAt(0);
            }
        }

s.next()将输入作为字符串输入,因此您可能需要在循环中尝试取出第一个char。

如果您打算从某个文件中读取输入,而不是阅读过程会有所不同,您可以查找。