Java 为什么不使用返回类型char返回等级?

Java 为什么不使用返回类型char返回等级?,java,return,Java,Return,我又开始学习Java了。我在显示char数据类型返回值时遇到问题。一切正常,除了这个。它应该能够以B C D的形式显示成绩,但为空。有人能帮我找到错误并解决问题吗?有人建议我可以使用System.out.printlnA使其工作;在返回A之前,我尝试过,但不起作用。我在SF中搜索,但找不到确切问题的答案。先谢谢你 package score; import java.util.Scanner; /** * * @author rabin */ public class Score {

我又开始学习Java了。我在显示char数据类型返回值时遇到问题。一切正常,除了这个。它应该能够以B C D的形式显示成绩,但为空。有人能帮我找到错误并解决问题吗?有人建议我可以使用System.out.printlnA使其工作;在返回A之前,我尝试过,但不起作用。我在SF中搜索,但找不到确切问题的答案。先谢谢你

package score;

import java.util.Scanner;

/**
 *
 * @author rabin
 */
public class Score {
    static double earnedPoints, possiblePoints, pointsPercent;
    static char grade;
    //static String name;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int testNumber;

        String stuName;
        // TODO code application logic here
        System.out.println("How many tests were given?");
        Scanner input1 = new Scanner(System.in);
        testNumber = input1.nextInt();

        System.out.println("Enter Student's Name");
        Scanner nameInput = new Scanner(System.in);
        stuName = nameInput.next();
        if (stuName.contains(" ")){
            System.out.println("This field should not contain spaces");


        }
        pointsEarned(testNumber);
        letterGrade(pointsPercent);
        displayResult(stuName, pointsPercent, grade);
    }
    public static double pointsEarned(int testNumber){

        System.out.println("Enter Points Earned.");
        Scanner pointsInput = new Scanner(System.in);
        earnedPoints = pointsInput.nextDouble();
        System.out.println("Enter Possible Points.");
        Scanner possibleInput = new Scanner(System.in);
        possiblePoints = possibleInput.nextDouble();
        pointsPercent = ((earnedPoints / possiblePoints) * 100);
        return pointsPercent;
    }
    public static char letterGrade(double percentage){
        if (percentage >= 90 && percentage <= 100){
            System.out.println("A");
            return 'A';
        }
        else if (percentage >= 80 && percentage < 90){
            System.out.println("B");
            return 'B';
        }
        else if (percentage >= 70 && percentage < 80){
            System.out.println("C");
            return 'C';
        }
        else if (percentage >= 60 && percentage < 70){
            System.out.println("D");
            return 'D';
        }
        else {
            System.out.println("F");
            return 'F';
        }


    }
    public static void displayResult(String name, double percentage, char grade){
        System.out.println("Result");
        System.out.println("Name: " +name);
        System.out.println("Percent: " +percentage);
        System.out.println("Letter Grade: " +grade);



    }

}

问题是您调用了适当的方法,但没有将其分配给grade变量

将返回值分配给grade变量,如下所示:

grade = letterGrade(pointsPercent);

您不会将返回的结果放入必须使用的等级变量中:

grade = letterGrade(pointsPercent);
在主程序中,需要使用静态变量保存方法的返回值:

public static void main(String[] args) {
        int testNumber;
        String stuName;
        // TODO code application logic here
        System.out.println("How many tests were given?");
        Scanner input = new Scanner(System.in);
        testNumber = input.nextInt();

        System.out.println("Enter Student's Name");
        //Scanner nameInput = new Scanner(System.in); you don't have to use another scanner variable to read inputs only one is enough
        stuName = input.next();
        if (stuName.contains(" ")){
            System.out.println("This field should not contain spaces");


        }
        pointsPercent = pointsEarned(testNumber); // save the return value of pointsEarned method in pointsPrecent
        grade = letterGrade(pointsPercent); //save the return value of letterGrade method in grade 
        displayResult(stuName, pointsPercent, grade);
    }
你从不给分数分配任何东西;您只需返回值并放弃它。