gpt4 book ai didi

java - For 循环未正确执行 scan.nextInt

转载 作者:行者123 更新时间:2023-12-02 07:13:29 24 4
gpt4 key购买 nike

这是我正在为类制作的一个程序。在编写了大部分程序后,我现在尝试运行它,似乎有一个逻辑错误。由于某种原因,计算机只会执行到第一个 for 循环,然后忽略 scan.nextInt 方法,在这些方法中我尝试提示用户将值输入到数组中。

编辑:新问题:现在,当我运行程序时,未正确执行的循环是第二个 for 循环。无论您输入什么,它都会返回正确的总数作为可能的正确总数。还返回 0% 正确:(

编辑 2:我解决了正确百分比部分的问题,但我仍然不知道在对测验评分时比较输入值与正确答案的正确方法。 ..它总是返回正确的数字作为问题总数,无论它们是否正确。

import java.util.Scanner;
public class gradingQuizzes {

public static void main(String[] args)
{

int numQuestions; // number of questions on quiz
int numCorrect = 0; // number correct of entered values
int correctAnswer;

Scanner scan = new Scanner(System.in);
System.out.println("Please enter the amount of questions in the Quiz: ");
numQuestions = scan.nextInt();
int[] key = new int[numQuestions]; // creates an array for the key to the quiz

// Prompts the user to enter values into the key array
for (int i = 0; i < key.length; i++)
{
System.out.println("Please enter the correct answer to question number " + (i + 1) + " : ");
key[i] = scan.nextInt();
}

System.out.println("Please enter the answers for the quiz to be graded: ");
System.out.println("---------------------------------------------------");

// 'for' loop asking for the correct answer for each question on the quiz
for (int i = 0; i < key.length; i++)
{
System.out.println("Question " + (i + 1) + " answer: ");
correctAnswer = scan.nextInt();
if (correctAnswer == key [i]);
{
numCorrect++; // increments the number correct for each match to the key
}
}
// Creates a variable to compute the percent correct on the quiz
double percentCorrect = (numCorrect / (key.length));

System.out.println("The number correct is: " + numCorrect);
System.out.println("The percent correct: %" + percentCorrect);
}

最佳答案

您正在使用 0 大小初始化数组(请注意,您正在使用 0 初始化 numQuestions)。只需在从用户输入中获取 numQuestions 值后移动数组初始化即可:

numQuestions = scan.nextInt();
int[] key = new int[numQuestions];
<小时/>

如果您想使用 int/longdouble 值分配给 double 变量,则应该进行强制转换将 int/long 转换为 double 或乘以 1.0(文字),否则浮点结果将为int/long。修改这部分代码:

double percentCorrect = ((numCorrect * 1.0) / ((key.length + 1) * 1.0) );

如果你想打印格式化文本来输出,你应该使用System.out.printf 。我将编写最终代码的示例(关于语言语法):

//System.out.println("The percent correct: %" + percentCorrect);
System.out.printf("The percent correct: %% %.2f\n", percentCorrect);

来自上面的链接:

  • %% 将打印 % 符号
  • %.2f 将使用 2 位固定小数打印 float
  • \n 将打印换行符

关于java - For 循环未正确执行 scan.nextInt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15238084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com