首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java GPA程序问题

Java GPA程序问题
EN

Stack Overflow用户
提问于 2015-11-13 02:16:45
回答 2查看 129关注 0票数 3

因为某种原因,我的程序是计算GPA平均数错误。如果我三次输入4.0,它说平均GPA是3.0,但应该是4.0。有人能帮我找到这个问题吗?

代码语言:javascript
复制
//variables
double gpa = 0;
double total = 0;
int counter = 0;
int counter2 = 0;

do
{
    String gpaEntry = JOptionPane.showInputDialog("Please enter GPAs:");
    gpa = Double.parseDouble(gpaEntry);

    if (gpa >= 3.5)
        counter2 ++;

    total += gpa;
        counter ++;
}
while (gpa != 0);

double average = (double) (total/counter);

JOptionPane.showMessageDialog(null, "The Average GPA is: " + average);
JOptionPane.showMessageDialog(null, "Number of students:" + counter2);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-13 02:36:37

让我们走一遍代码

  • gpa =0
  • 获取用户输入(用户输入'2')
  • 现在gpa =2
  • 总+= 2
  • 计数器++
  • 而( gpa != 0) // nope,gpa是2
  • 回环
  • 获取用户输入(用户输入'0')
  • 现在gpa =0
  • 总+= 0
  • 计数器++ // oops!
  • 虽然(gpa != 0) //是的,退出循环

但是为时已晚,我们已经增加了counter,所以我们的average计算是错误的

票数 5
EN

Stack Overflow用户

发布于 2015-11-13 02:29:49

问题是,如果用户输入0,则运行程序,然后退出。

尝试这段代码(对不起,我目前没有编辑器,所以您可能需要修复一些小问题)。

代码语言:javascript
复制
//variables
double gpa = 0;
double total = 0;
int counter = 0;
int counter2 = 0;

String gpaEntry = JOptionPane.showInputDialog("Please enter GPAs:");
gpa = Double.parseDouble(gpaEntry);

while (gpa != 0) {
    if (gpa >= 3.5)
        counter2 ++;

    total += gpa;
    counter ++;

    gpaEntry = JOptionPane.showInputDialog("Please enter GPAs:");
    gpa = Double.parseDouble(gpaEntry);
}

JOptionPane.showMessageDialog(null, "The Average GPA is: " + average);
JOptionPane.showMessageDialog(null, "Number of students:" + counter2);

如果你还有其他问题,请发表评论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33684884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档