计算平均Java

时间:2014-11-10 20:35:41

标签: java math arithmetic-expressions

我正在尝试计算学生分数的平均值,因为我正在努力计算部分。

在我的任务中,我被要求计算三名学生的平均年龄和平均值。三个学生的高度。

有人可以在这段代码的最后一行指导我,我为新手问题道歉,真的卡住了,无法解决为什么它不计算我的数字。

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)");
}

}

4 个答案:

答案 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/365/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));