字符数组未正确读取输入

Posted

技术标签:

【中文标题】字符数组未正确读取输入【英文标题】:Char array not reading input correctly 【发布时间】:2016-07-23 09:20:43 【问题描述】:

我的任务是制作一个程序,其中包含一个 char 数组,其中填充了 10 个问题测试的正确答案。我制作了一个填充了用户答案的​​数组,并且应该使用测试答案检查用户答案,并在给定用户输入的情况下给出通过或失败的输出。代码编译,我可以输入 10 个字符,但是无论我输入什么字符,输出始终是 10 个答案不正确,共 10 个。

在过去的几个小时里,我一直在试图弄清楚这一点,并希望在这里得到一些帮助。

这里是sn-p的代码:

     //Part 2
    char[] correctAnswers = 'b', 'd', 'a', 'a', 'c', 'a', 'b', 'a', 'c', 'd'; //Char arrays
    char[] studentAnswers = new char[10];

    System.out.println("What are the students 10 answers?"); //Getting student answers

    for (int i = 0; i < correctAnswers.length; i++)
        studentAnswers = scan.next().toCharArray();

    int points = 0; //Used to calculate pass or fail

    for (int i = 0; i < correctAnswers.length; i++);

    int j = 0; //Used to identify each element in the array

    if (correctAnswers[j] == studentAnswers[j]) //Checks each answer with the correct answers and adds 1 point if it is true
    
        points++;
        j++;
    
    else 
        j++;
    

     if (points >= 8) 
        System.out.println("Congratulations! \nYou have passed exam.");
        System.out.println("Total number of correct answers: " + points); //print points
        System.out.println("Total number of incorrect answers: " + (correctAnswers.length - points)); //10 - points would equal the remaining amount of points available which would be how many were missed.
     else 
        System.out.println("Sorry, you have not passed the exam!");
        System.out.println("Total number of correct answers: " + points);
        System.out.println("Total number of incorrect answers: " + (correctAnswers.length - points));
    

【问题讨论】:

【参考方案1】:
for(int i = 0; i < correctAnswers.length; i++)
    studentAnswers = scan.next().toCharArray();

    我认为您应该删除第一行。它出现两次。假设您将所有 10 个答案读为 1 个字符串。

    然后处处使用i而不是j,这是多余的(去掉jj++的声明,所以变成空的else也可以删除)。

    此外,您需要在 for 之后和输出之前(即在检查总分之前)放置大括号 。如果你在for 后面加上一个分号;,那么你x 次什么都不做。

我明白你为什么使用j: 因为i 没有定义。它只存在于循环中(由空、跳过或“什么都不做”命令组成:一个单独的分号)。当您添加 (参见 3.)时,i 位于这些大括号之间。

【讨论】:

谢谢,这是有道理的,但是现在我在输出中得到一个数组越界错误? @Tyler 仅当您输入少于或多于 10 个字符时,我猜。 我正好输入 10,这是数组的大小,然后我得到了那个错误。我很困惑要修复这个我从未遇到过的错误。 @Tyler 也许您需要在 next 之后放置一个 .trim() 或使用 nextLine,可能是自定义类,所以我不知道。要么执行数组大小的 System.out.printn,要么使用良好的开发环境,例如eclipse,设置断点并检查发生了什么。

以上是关于字符数组未正确读取输入的主要内容,如果未能解决你的问题,请参考以下文章

C++,布尔数组未正确初始化

java怎样读取带空格的字符串数组

*字符数组*

从字节数组中获取正确格式的字符串

Radix 使用 Java 中的队列对字符串数组进行排序

数组中的“System.FormatException:'输入字符串格式不正确”错误