Java 平均成绩计算器未返回正确答案
这是一个计算平均成绩的程序,我无法找出我的代码有什么问题。它返回了错误的答案 编辑文章以删除个人信息。 :Java 平均成绩计算器未返回正确答案,java,sum,average,addition,Java,Sum,Average,Addition,这是一个计算平均成绩的程序,我无法找出我的代码有什么问题。它返回了错误的答案 编辑文章以删除个人信息。 : 总和应为150,平均值为75。您没有将您在之外接受的第一个等级添加到总数中。 如果等级不可接受,则增加计数也没有意义,因此仅在等级检查后增加计数 您可以重写while块,例如 while (true) { System.out.println("Please input the grade"); grade = keyboard.nextDouble
总和应为150,平均值为75。您没有将您在
之外接受的第一个等级添加到总数中。
如果等级
不可接受,则增加计数
也没有意义,因此仅在等级
检查后增加计数
您可以重写while块,例如
while (true) {
System.out.println("Please input the grade");
grade = keyboard.nextDouble();
if (grade < 0)
break;
count = count + 1;
total += grade;
}
avgGrade = total / count;
System.out.println("Sum is " + total);
System.out.printf("The average of the %.0f grades are %.2f ", count,
avgGrade);
}
while(true){
System.out.println(“请输入分数”);
等级=键盘.nextDouble();
如果(等级<0)
打破
计数=计数+1;
总数+=年级;
}
平均等级=总数/计数;
系统输出打印项次(“总和为”+总计);
System.out.printf(“%.0f等级的平均值为%.2f”,计数,
平均等级);
}
问题在于,在while循环开始之前,您正在从用户处读取一个等级,之后您将忽略该值
您应该删除这两行,事情将按预期进行。我在下面的代码片段中对这些行进行了注释,以明确地向您展示问题所在
public static void avgGrade() {
Scanner keyboard = new Scanner(System.in);
double count = 0;
double avgGrade = 0;
double grade;
double total = 0;
// System.out.println("Please input the grade");
// grade = keyboard.nextDouble();
while(true){
System.out.println("Please input the grade");
grade = keyboard.nextDouble();
count = count + 1;
if (grade < 0) break;
total += grade;
avgGrade = total/count;
}
System.out.println ("Sum is " +total);
System.out.printf("The average of the %.0f grades are %.2f " ,count ,avgGrade);
}
publicstaticvoidavggrade(){
扫描仪键盘=新扫描仪(System.in);
重复计数=0;
双平均梯度=0;
双级;
双倍合计=0;
//System.out.println(“请输入分数”);
//等级=键盘.nextDouble();
while(true){
System.out.println(“请输入分数”);
等级=键盘.nextDouble();
计数=计数+1;
如果(等级<0)断裂;
总数+=年级;
平均等级=总数/计数;
}
System.out.println(“总和为”+总计);
System.out.printf(“%.0f等级的平均值为%.2f”,计数,平均等级);
}
作为旁注,您应该始终尝试最小化每个变量的范围。这里,grade
变量仅在while
循环中使用,因此您可以直接编写double grade=keyboard.nextDouble()编码>并删除方法开头的声明。几个问题:
- 首先,在第一次阅读之前,你在年级上做两个作业(第一个在while循环之前,第二个在while循环内部),所以第一个输入将被完全忽略
- 第二,在检查是否中断while循环之前,先递增count变量,这样最终count将比应该的值高1
- 第三,平均值是在循环内部计算的,不会在最后一次(部分)迭代中重新计算
程序将如下所示:
- 输入:100,计数:0,总计:0,平均值:0
- 输入被忽略
- 输入:50,计数:1,总数:50,平均值:50
- 输入:-9,计数:2,总数:50,平均值:50
- 循环退出,但之前的计数递增;没有重新计算平均值
谢谢大家。这是最后的代码
/**
* This program will calculate grade average of user input
*
* Date: 10/2/2015
*/
import java.util.Scanner;
public class GradeAVG {
public static void main(String[] args) {
avgGrade()
}
public static void avgGrade()
{
Scanner keyboard = new Scanner (System.in);
double count = 0;
double avgGrade = 0 ;
double total = 0;
while(true){
System.out.println("Please input the grade");
double grade= keyboard.nextDouble();
if (grade < 0) break;
count = count + 1;
total += grade;
avgGrade = total/count;
}
System.out.println ("Sum is " +total);
System.out.printf("The average of the %.0f grades are %.2f " ,count ,avgGrade);
}
}
/**
*该程序将计算用户输入的平均成绩
*
*日期:2015年10月2日
*/
导入java.util.Scanner;
公开课平均成绩{
公共静态void main(字符串[]args){
avgGrade()
}
公共静态void avgGrade()
{
扫描仪键盘=新扫描仪(System.in);
重复计数=0;
双平均梯度=0;
双倍合计=0;
while(true){
System.out.println(“请输入分数”);
双级=键盘.nextDouble();
如果(等级<0)断裂;
计数=计数+1;
总数+=年级;
平均等级=总数/计数;
}
System.out.println(“总和为”+总计);
System.out.printf(“%.0f等级的平均值为%.2f”,计数,平均等级);
}
}
欢迎来到堆栈溢出。写问题时请多加小心——你的演示文稿到处都是,代码的格式不是代码,非代码的格式是代码,缩进不好,垂直空白的随机位很大。如果人们一开始就写了一个好问题,那么帮助他们就容易多了(而潜在的回答者也更可能这样做)。
public static void avgGrade() {
Scanner keyboard = new Scanner(System.in);
double count = 0;
double avgGrade = 0;
double grade;
double total = 0;
// System.out.println("Please input the grade");
// grade = keyboard.nextDouble();
while(true){
System.out.println("Please input the grade");
grade = keyboard.nextDouble();
count = count + 1;
if (grade < 0) break;
total += grade;
avgGrade = total/count;
}
System.out.println ("Sum is " +total);
System.out.printf("The average of the %.0f grades are %.2f " ,count ,avgGrade);
}
/**
* This program will calculate grade average of user input
*
* Date: 10/2/2015
*/
import java.util.Scanner;
public class GradeAVG {
public static void main(String[] args) {
avgGrade()
}
public static void avgGrade()
{
Scanner keyboard = new Scanner (System.in);
double count = 0;
double avgGrade = 0 ;
double total = 0;
while(true){
System.out.println("Please input the grade");
double grade= keyboard.nextDouble();
if (grade < 0) break;
count = count + 1;
total += grade;
avgGrade = total/count;
}
System.out.println ("Sum is " +total);
System.out.printf("The average of the %.0f grades are %.2f " ,count ,avgGrade);
}
}