【发布时间】:2022-11-17 21:36:44
【问题描述】:
我是 Java 的初学者,所以我的目标是使用多个类确定 3 个用户输入分数的平均值,并打印是否为 60>n = F, 70>n = D 80>n = C, 90>n = B, 100>n = A, 101>n = ?其中 n 是 3 个分数的平均值。第一类有扫描仪,第二类有 else-if,输入的数据和它们的计算平均值。
import java.util.Scanner;
public class MyClass {
public static void main(String args[]) {
Scanner myObj = new Scanner(System.in);
System.out.println("Enter your Score on HTML: ");
double Score1=myObj.nextDouble();
System.out.println("Enter your Score on JAVA: ");
double Score2=myObj.nextDouble();
System.out.println("Enter your Score on C: ");
double Score3=myObj.nextDouble();
System.out.println("Total average: " + Score1 + Score2 + Score3);
Second R = new Second(Score1,Score2,Score3);
R.P();
}
}
--------------------------------------------------------------
public class Second {
double S1;
double S2;
double S3;
double average;
Second(double Score1, double Score2, double Score3)
{
Score1 = S1;
Score2 = S2;
Score3 = S3;
average = (Score1 + Score2 + Score3) /3;
}
// public char calcAverage();
// double average (Score1, Score2, Score3)
public void P(){
if(average < 60){
System.out.println("F");
}else if(average < 70){
System.out.println("D");
}else if(average < 80){
System.out.println("C");
}else if(average < 90){
System.out.println("B");
}else if(average < 100){
System.out.println("A");
}else {
System.out.println("?");
}
}
}
我期望它根据计算的平均值打印 A-F,但无论输入的值有多高,它总是返回 F。
【问题讨论】:
-
你提供了什么价值?你调试你的代码了吗?或者至少打印“平均值”的值?
-
Score1 = S1;和其他人应该从Score1开始被逆转持有调用构造函数和S1时提供的数据是场地需要复制它。 -
您的构造函数中的分配错误。因此,S1、S2 和 S3 永远不会获得分配给它们的任何值,并且在计算平均值时将始终为 0.0。
-
这些值应该是用户输入的,平均值将在第二类中计算,然后在 else-if 语句中对其进行测试。我在第一个类中调用了该方法以使其运行。
-
@Stultuske 是的,但是传递的参数被构造函数中的字段值覆盖,因此在计算平均值之前设置为 0.0 => Score1 = S1;会将 Score1 设置为 0.0
标签: java