我想要一种使用第一个值作为参数来获取第二个值的方法。 为了说明这一点,Nota是标记(西班牙语),第二个值是此处使用的评分标准(而不是F,D-,D,C ...)
如您所见,等级标准被重复,而整数编号。 (是的,此练习应使用浮点数进行,但请忽略它),因此int值(numNota)类似于标识符。
public enum Nota {
NOTA0(0,"Suspenso"),
NOTA1(1,"Suspenso"),
NOTA2(2,"Suspenso"),
NOTA3(3,"Suspenso"),
NOTA4(4,"Suspenso"),
NOTA5(5,"Suficiente"),
NOTA6(6,"Bien"),
NOTA7(7,"Notable"),
NOTA8(8,"Notable"),
NOTA9(9,"Sobresaliente"),
NOTA10(10,"Sobresaliente");
private int numNota;
private String stringNota;
Nota(int numNota, String stringNota) {
this.numNota = numNota;
this.stringNota = stringNota;
}
public int getNumNota() {
return numNota;
}
public String getStringNota() {
return stringNota;
}
public void setByNumNota(int numNota) {
this.numNota = numNota;
this.stringNota = ?????????
}
我要为校友分配每个nota(标记)
public Alumno(String nombre, Nota nota) {
this.nombre = nombre;
this.nota = nota;
}
输入扫描仪正在引入标记。这就是为什么我需要根据mark的int值创建一个Nota对象的原因。
此练习尚无数据库。我们的类现在是完整的java,现在所有数据都已加载到内存中(我希望我们已经在使用DB)
答案 0 :(得分:1)
由于可以从stringNota
中确定numNota
(但不能反过来确定),因此它不必是构造函数参数。您可以在构造函数内部简单地对其进行计算,而仅将数字作为参数。
public enum Nota {
NOTA0(0),
NOTA1(1),
NOTA2(2),
NOTA3(3),
NOTA4(4),
NOTA5(5),
NOTA6(6),
NOTA7(7),
NOTA8(8),
NOTA9(9),
NOTA10(10);
private int numNota;
private String stringNota;
Nota(int numNota) {
this.numNota = numNota;
stringNota = stringFromNumNota(numNota); //see below
}
由于构造函数实际上是私有的,因此无需检查负数和大于10的数字。
编辑:要从stringNota
获取numNota
,您只需编写一个额外的方法即可。
public String stringFromNumNota(int numNota) {
return numNota < 5 ? "Suspenso"
: numNota == 5 ? "Suficiente"
: numNota == 6 ? "Bien"
: numNota < 9 ? "Notable"
: "Sobresaliente";
}