我正在进行第四周的java在线学习,我有一个作业要用枚举法来创建一个评分量表。
我已经创建了分级规模枚举,但完全不知道如何让用户输入一个数字值,然后输出字母值。每次尝试,它要么告诉我不能对所选内容使用返回函数,要么system.out.println也不想接受我的值。我决定完全废弃我的类文件并重新启动,但不知道我做错了什么。这是我的枚举码:
public enum Grade {
A(95-100, "A"),
AMINUS(92-94, "A-"),
BPLUS(89-91, "B+"),
B(86-88, "B"),
BMINUS(83-85, "B-"),
CPLUS(80-82, "C+"),
C(77-79, "C"),
CMINUS(74-76, "C-"),
DPLUS(71-73, "D+"),
D(68-70, "D"),
DMINUS(65-67, "D-"),
F(1-64, "F"),
FA(0, "FAILURE TO APPEAR");
private final String gradeText;
private Grade(int gradeValue, String gradeText) {
this.gradeText = gradeText;
}
public String printGrade() {
return gradeText;
}
}
5条答案
按热度按时间oyt4ldly1#
我认为这种方法可以帮助你。
与其尝试在枚举中存储范围,不如为每个级别存储仍可视为该级别的最大值。然后,您可以借助静态方法检索实际的字母等级:
测试:
告诉我们:
w6lpcovy2#
您需要将边界定义为单独的字段,以便编译器理解。可能您正在查找这样的枚举:
然后你可以在你的课堂上用这个来获得分数
woobm2wo3#
我猜你是想达到这样的目标:
我用两个单独的参数替换了“range”定义,将它们存储到enum字段中,并添加了一个
getGrade(int points)
方法,返回Grade
与给定点数对应的枚举项。如果输入的数字不在0
至100
,方法返回null。这个main
方法只是完成这个简单的概念证明和一个如何使用的例子getGrade(int)
方法。3lxsmp7m4#
构造器不会像你使用它那样工作。如果要向枚举类型中添加值(如本文所述),则需要在构造函数中设置这些值。
因此,枚举类型只需要一个构造函数,而另一个java类永远不能使用该构造函数。
由于java中没有easy range类,我建议您将最小值和最大值定义为单独的参数:
在构造函数中,需要指定以下值:
您可以通过其他函数访问变量,并根据您提供的参数声明返回“grade”枚举类型的静态函数。这篇文章的其他答案提供了比我所能写的更好的功能,所以我会让你参考这些。
zaq34kh65#
现在你可以把分数转换成
Gradle
: