【问题标题】:Why does it always print F in my else-if statement为什么它总是在我的 else-if 语句中打印 F
【发布时间】: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


【解决方案1】:

尝试这个

public void P(){
    if(average < 60){
        System.out.println("F");
        
    }else if(average >60 && average < 70){
        System.out.println("D");
        
    }else if(average >60 && average < 80){
        System.out.println("C");
        
    }else if(average > 80 &&average < 90){
        System.out.println("B");
        
    }else if(average >90 &&average < 100){
        System.out.println("A");
        
    }else {
        System.out.println("?");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多