有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在不获得相同结果的情况下使用方法

我的程序从文件中取出分数,询问用户是想要字母分数还是数字分数。然而,我还需要说明成绩是通过还是不通过,我使用了一个switch语句的方法

问题是,它只会打印所有人的通行证。因为它只测试一级然后打印出字符串。我该如何测试每一个等级并打印相应的及格或不及格

    public class Grade_Class {

    String letterGrade;

    Grade_Class() // Default constructor
    {

    }

    public boolean pass(String letterGrade) {
        boolean pass = true;

        switch (letterGrade) {
        case "A":
        case "B":
        case "C":
        case "D":
            pass = true;
            break;
        case "F":
            pass = false;
            break;

        }
        return pass;

    }

    public String getLetterGrade(double testScore) // gets letter value of grade
    {
        String letterGrade = "";
        if (testScore >= 95) {
            letterGrade = "A+";
        } else if (testScore <= 94.9 && testScore >= 90) {
            letterGrade = "A";
        } else if (testScore <= 89.9 && testScore >= 85) {
            letterGrade = "B+";
        } else if (testScore <= 84.9 && testScore >= 80) {
            letterGrade = "B";
        } else if (testScore <= 79.9 && testScore >= 75) {
            letterGrade = "C+";
        } else if (testScore <= 74.9 && testScore >= 70) {
            letterGrade = "C";
        } else if (testScore <= 69.9 && testScore >= 65) {
            letterGrade = "D";
        } else if (testScore <= 64.9) {
            letterGrade = "F";
        }

        return letterGrade;
    }
}

    import javax.swing.JOptionPane;
import java.io.*;
import java.text.DecimalFormat;
import java.util.Scanner;

public class test {

    public static void main(String[] args) throws IOException {
        Grade_Class obj1 = new Grade_Class(); // creates obj of Grade_Class

        String name = "";
        String option = "";
        int userOpt = 0;

        File inputFile = new File("grades.txt");
        Scanner myInput = new Scanner(inputFile);
        double grades[] = new double[12];
        String passOrFail[] = new String[12];
        double test = 0;
        String letterGrade = "";
        String passFail = "";

        FileWriter fw = new FileWriter("LetterGrade.txt");
        PrintWriter outputFile = new PrintWriter(fw);

        name = JOptionPane.showInputDialog("Enter students name:");
        option = JOptionPane
                .showInputDialog("Pick an option \n 1: print out grade letter \n 2: print out number grade");
        userOpt = Integer.parseInt(option);
        System.out.println("Student name:" + name);

        for (int i = 1; i < 12; i++) {
            test = myInput.nextDouble();
            grades[i] = test;
            if (userOpt == 1) {

                /*
                 * if (obj1.pass(letterGrade)) { passFail = "pass"; } else {
                 * passFail = "fail"; }
                 */

                System.out.println("Test " + i + ": " + obj1.getLetterGrade(test) + " " + passFail);
                DecimalFormat df = new DecimalFormat("###.00");
                Double average1 = Double.parseDouble(df.format(test));
                outputFile.println("Test " + i + ": " + obj1.getLetterGrade(test) + " " + average1 + "%");
            } else if (userOpt == 2) {
                DecimalFormat df = new DecimalFormat("###.00");
                Double average1 = Double.parseDouble(df.format(test));

                /*
                 * if (obj1.pass(letterGrade) == true) { passFail = "pass"; }
                 * else { passFail = "fail"; }
                 */
                System.out.println("Test " + i + ": " + average1 + "%" + " " + passFail);
                outputFile.println("Test " + i + ": " + obj1.getLetterGrade(test) + " " + average1 + "%");

            }

        }

        myInput.close();
        outputFile.close();

    }
}

共 (1) 个答案

  1. # 1 楼答案

    对于这样一个简单的错误来说,代码太多了

    if (obj1.pass(letterGrade)) { 
        passFail = "pass"; 
    } else {
        passFail = "fail"; 
    }
    

    除了""之外,您从未将letterGrade设置为任何其他值。 只要用if (obj1.pass(obj1.getLetterGrade(test)))替换if (obj1.pass(letterGrade))就可以了

    这意味着它有效。你真的应该对你的代码风格和总体架构做些什么,但无论如何,这就是你犯错误的地方