gpt4 book ai didi

java - Java 代码缺少一些简单的东西

转载 作者:行者123 更新时间:2023-12-01 18:42:52 25 4
gpt4 key购买 nike

这里是初学者 Java 学生..我正在尝试创建一个学生平均成绩程序,该程序在添加哨兵值“999”时停止。这是我得到的:

import  

javax.swing.JOptionPane;

public class average_grades
{
public static void main (String []args)
{
int num_grades = 0;
int total_grade = 0;
int average_grade = 0;
int student_grade = 0;
while (student_grade != 999)
{
student_grade = Integer.parseInt(JOptionPane.showInputDialog(null, "What is the student's grade?"));
if (student_grade < 0)
{
JOptionPane.showMessageDialog(null,"Invalid Entry");
}
else
{
num_grades++;
total_grade = total_grade + student_grade;
average_grade = total_grade/num_grades;
}

}
JOptionPane.showMessageDialog(null, "Average: " + average_grade);
}
}

我遇到的问题是 999 被添加到平均值中,但我不知道简单的解决方案是什么。谢谢!

最佳答案

您的问题是 else 语句中的代码(将值添加到平均值中)在检查该值是否是哨兵之前运行。

一个简单的修复可能是:

while (true) {
student_grade = Integer.parseInt(JOptionPane.showInputDialog(null, "What is the student's grade?"));
if (student_grade == 999) break;
else if (student_grade < 0) { /* your code */ }
else { /* your code */ }
}

还有其他方法可以实现此目的,但需要发生的顺序:

  • 获取用户输入的学生成绩值
  • 检查哨兵值是否存在;如果是这样,则中断
  • 检查值是否有效;如果没有,请重复步骤 2-3
  • 为平均值计算增加值(value)

编辑:要通过不能使用 break 的约束来解决此问题(根据评论中 @baash05 的请求),请执行以下操作:

student_grade = Integer.parseInt( /* your code to get entry */ );
while (student_grade != 999) {
if (student_grade < 0) { /* your code */ }
else { /* your code */ }
student_grade = Integer.parseInt( /* your code to get entry */ );
}

此代码不使用break语句,但仍然满足需要发生的事情的正确顺序。

关于java - Java 代码缺少一些简单的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19170306/

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