我正在尝试计算学生分数的平均值,因为我正在努力计算部分。
在我的任务中,我被要求计算三名学生的平均年龄和平均值。三个学生的高度。
有人可以在这段代码的最后一行指导我,我为新手问题道歉,真的卡住了,无法解决为什么它不计算我的数字。
public static void main(String[] args) {
// this method will display the scores of students
//variable declaration
int JasperAge = 20;
int JasperHeigth = (int) 175.5;
int PaulaAge = 25;
int PaulaHeigth = (int) 190.5;
int NicoleAge = 18;
int NicoleHeigth = (int) 165;
//output
Scanner output = new Scanner (System.in);
System.out.println("Name\t "+ " Age\t " + " Height (cm)\t");
System.out.println("\n");
System.out.println("Jasper\t "+JasperAge+" \t "+JasperHeigth);
System.out.println("Paula\t "+PaulaAge+" \t "+PaulaHeigth);
System.out.println("Nicole\t "+NicoleAge+" \t "+NicoleHeigth);
System.out.println("Average\t ((20 + 25 + 18) /3) \t ((175.5 + 190.5 + 165) /3)");
}
}
答案 0 :(得分:6)
有一些问题:
int JasperHeigth = (int) 175.5;
int PaulaHeigth = (int) 190.5;
int NicoleHeigth = (int) 165;
鉴于这些似乎是带有十进制值的高度,您可能希望将它们存储为double
而不是int
s。当您将类似175.5的值声明为整数时,它实际上被截断为175.要存储这些数字的完整值,您应该将它们定义为:
double JasperHeigth = 175.5;
double PaulaHeigth = 190.5;
double NicoleHeigth = 165;
旁注:您必须使用(int)转换这些数字的原因是因为175.5
实际上是double
字面而不是int
,这就是您声明变量的内容像之前一样。
接下来,永远不会使用此扫描仪定义行:
Scanner output = new Scanner (System.in);
您可以使用Scanner
类来获取用户的输入。例如,如果您希望用户输入一些名称或数字。在这种情况下,您似乎不需要请求用户输入任何内容,因此可能会删除此行。
最后,显示输出的问题在这一行:
System.out.println("Average\t ((20 + 25 + 18) /3) \t ((175.5 + 190.5 + 165) /3)");
问题在于,通过将数字括在引号内,您的预期算术将不会被评估,而只是作为字符数据显示给用户。如果要评估这些表达式,可以使用+
运算符将数学运算从引号中拉出来并将它们连接到String数据:
System.out.println("Average\t" + ((20 + 25 + 18) /3) + "\t" + ((175.5 + 190.5 + 165) /3));
然而,这仍有一些问题。首先,((20 + 25 + 18) /3)
将评估为整数除法。它将减少到63/3
,即21。但是,如果您有64/3
或65/3
,它也会显示21,因为整数除法会截断小数点后面的数字部分。为防止截断您想要的结果,您可以将分子或分母中的任何一个数字转换为加倍,或除以双{1}}等双字。所以像这样:
3.0
最后,这些数字实际上都没有使用您之前定义的变量,它们是完全分开的。如果你想实际平均变量,你需要将它们替换为如下表达式:
System.out.println("Average\t" + ((20 + 25 + 19) /3.0) + "\t" + ((175.5 + 190.5 + 165) /3.0));
<强>摘要强>
这是一个包含我所有建议修改的程序:
System.out.println("Average\t" + ((JasperAge + PaulaAge + NicoleAge) /3.0) + "\t" + ((JasperHeigth + PaulaHeigth + NicoleHeigth) /3.0));
答案 1 :(得分:3)
你的最后一行应该是:
System.out.println("Average age: " + ((JasperAge + PaulaAge + NicoleAge) /3) + ". Average height: " + ((JasperHeigth + PaulaHeigth + NicoleHeigth) /3) ".");
记住我的计算,但你明白了。
答案 2 :(得分:2)
Java是一种面向对象的语言。您可能刚刚开始,但是了解封装永远不会太早:
public class Student {
private final String name;
private final int age; // bad idea - why?
private final double heightInCm;
public Student(String n, int a, double h) {
this.name = n;
this.age = a;
this.heightInCm = h;
}
public String getName() { return this.name; }
public int getAge() { return this.age; }
public double getHeightInCm() { return this.heightInCm; }
public String toString() {
return String.format("name: '%s' age: %d height: %10.2f (cm)", this.name, this.age, this.heightInCm);
}
}
答案 3 :(得分:0)
你必须像这样做最后一次打印:
System.out.println("Average\t " + ((20 + 25 + 18) /3) + "\t " + ((175.5 + 190.5 + 165) /3));
甚至更好地使用你的变量:
System.out.println("Average\t " + ((JasperAge + PaulaAge + NicoleAge) /3) + "\t " + ((JasperHeigth + PaulaHeigth + NicoleHeigth) /3));