gpt4 book ai didi

Java 从扫描仪输入中查找最小值总是导致零

转载 作者:行者123 更新时间:2023-12-02 03:59:08 25 4
gpt4 key购买 nike

这是我的第一个 Java 程序。它应该允许用户输入 0 到 100 之间的整数等级。如果用户输入负值,则数据输入停止并显示统计数据。我无法合并静态方法、数学或数组。

我在查找最低成绩 minGrade 时遇到问题。无论程序运行时输入什么值,minGrade 的结果始终为零。我已经对此进行了一段时间的修改,但没有成功。

我遇到的另一个问题是,当我运行程序时,我输入一堆 int,然后输入一些字母来测试错误检查,程序会解析用户两次,而不是一次。

"Please enter a numeric grade between 0 and 100, inclusive, and press Enter:"

相应的代码是:

import java.util.Scanner;


public class Grades {

public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);

System.out.println("Please enter the Course Code and and press Enter:");
String courseCode = keyboard.nextLine();
System.out.println("You entered: " + courseCode + "\n");

int grade = 0;

int numberOfGrades = 0;
int maxGrade = 0;
int minGrade =0;
double avgGrade = 0;
int sumGrades = 0;

int sentinel = 0;



do

{


**System.out.println("Please enter a numeric grade between 0 and 100, inclusive, and press Enter:");**
while(!keyboard.hasNextInt())
{

System.out.println("Please enter a numeric grade between 0 and 100, inclusive, and press Enter:");
keyboard.nextLine();

}

grade = keyboard.nextInt();
if((grade <=100) && (grade >= 0))
{
numberOfGrades++;
sumGrades += grade;
sentinel = 0;

if(maxGrade < grade)
maxGrade = grade;

**if(minGrade > grade)
minGrade= grade;**
}
else if(grade > 100)
{

System.out.println("The entered number was greater than 100. Please enter a number between 0 and 100 inclusive, "
+ "or input a negative number to exit Grade entry");
sentinel = 0;
}
else if(grade <0)
{
grade = 0;//maybe?
sentinel = -1;

}

}
while((grade >100) || (sentinel == 0));


avgGrade = (sumGrades/numberOfGrades);



System.out.println("You entered: " + "\ngrade: " + grade + "\n" + "sentinel: "+ sentinel +
"\nSum of Grades: " + sumGrades +"\nNumber of Grades: "+ numberOfGrades +"\nAverage Grades: " + avgGrade
+ "\nMaxium Grade: "+ maxGrade+"\nMinimum Grade: "+minGrade);
}

}

对此的任何输入、我的第一个 java 程序的代码形式或其他任何内容都将不胜感激。

我遇到的最后一个问题是平均成绩总是第十名为零。如何才能让第十名不为零且实际平均金额不为零?

最佳答案

您的 minGrade 问题是您将其初始化为 0。这已经是最小值,因此没有其他值会小于此值。 (事实上​​,您可以通过将负成绩设置为 0 来进一步确保这一点。)将其初始化为最大值 (100)。

看起来您的“双重提示”问题是 common onenextLinenextInt。该解决方案似乎仅使用 nextLine,然后解析 Integer 对象的返回值。 (并在 NumberFormatException 上打印出“无效输入”文本。

最后,当您除以两个整数时,您的 avgGrade 始终为 xx.0,这总是返回一个整数。您需要将一转换为双倍才能获得双倍返回:

avgGrade = ((double)sumGrades/numberOfGrades);

关于Java 从扫描仪输入中查找最小值总是导致零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35097586/

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