Java 为什么不使用返回类型char返回等级?
我又开始学习Java了。我在显示char数据类型返回值时遇到问题。一切正常,除了这个。它应该能够以B C D的形式显示成绩,但为空。有人能帮我找到错误并解决问题吗?有人建议我可以使用System.out.printlnA使其工作;在返回A之前,我尝试过,但不起作用。我在SF中搜索,但找不到确切问题的答案。先谢谢你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 {
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);
}
你从不给分数分配任何东西;您只需返回值并放弃它。