我必须写一个程序作为家庭作业,我遇到了一个问题,我无法解决这个问题。也许你们可以帮助我。 我上课了:
public class Listas {
//atributos
private Medico[] medicos;
private Enfermera[] enfermeras;
//Constructor
public Listas(){
medicos = new Medico[5];
enfermeras = new Enfermera[5];
}
//Sets y gets
//Medicos
public void setMedicos(Medico[] medicos){
this.medicos = medicos;
}
public Medico[] getMedicos(){
return medicos;
}
//Enfermeras
public void setEnfermeras(Enfermera[] enfermeras){
this.enfermeras = enfermeras;
}
public Enfermera[] getEnfermeras(){
return enfermeras;
}
Medico med1 = new Medico(1, "Juan" , "Pérez", "6799652-3", "1234567870101", 89098, 15000, true);
Medico med2 = new Medico(2, "Luis", "Gutiérrez", "8964547-3", "9876543260101", 98554, 12000, false);
Medico med3 = new Medico(3, "Eduardo", "González", "8786456-6", "5642871750101", 5653, 17000, true);
Medico med4 = new Medico(4, "Guadalupe", "Torres", "5684873-1", "4562973920101", 10098, 17000, true);
Medico med5 = new Medico(5, "María", "Castillo", "8765485-7", "569395290101", 67965, 13000, false);
medicos[1] = med1;
medicos[2] = med2;
medicos[3] = med3;
medicos[4] = med4;
medicos[5] = med5;
}
}
该程序告诉我,在行的末尾有一些错误,我可以定义变量med5。 我想要做的就是将med1添加到数组5的medos []。 med1 - 5的构造函数在另一个类中,称为Medico。
对我做错了什么的任何建议?
答案 0 :(得分:1)
问题是你不能在方法之外分配medicos
字段的值。
你犯的另一个错误是索引。您已分配medicos[5]
,但自从您将其初始化为new Medico[5]
后,最后一个可用索引为4.您可能希望将med*
值分配给medicos[0]
,..., medicos[4]
。
也许你想这样做:
public Listas(){
medicos = new Medico[5];
enfermeras = new Enfermera[5];
Medico med1 = new Medico(1, "Juan" , "Pérez", "6799652-3", "1234567870101", 89098, 15000, true);
Medico med2 = new Medico(2, "Luis", "Gutiérrez", "8964547-3", "9876543260101", 98554, 12000, false);
Medico med3 = new Medico(3, "Eduardo", "González", "8786456-6", "5642871750101", 5653, 17000, true);
Medico med4 = new Medico(4, "Guadalupe", "Torres", "5684873-1", "4562973920101", 10098, 17000, true);
Medico med5 = new Medico(5, "María", "Castillo", "8765485-7", "569395290101", 67965, 13000, false);
medicos[0] = med1;
medicos[1] = med2;
medicos[2] = med3;
medicos[3] = med4;
medicos[4] = med5;
}
关于方法之外的原始代码的最终说明:
public class Listas {
public Listas() {
medicos = new Medico[5];
// ...
}
// *1
Medico med1 = new Medico(1, "Juan" , "Pérez", "6799652-3", "1234567870101", 89098, 15000, true);
// *2
medicos[1] = med1;
med1
你可以在方法之外进行字段声明,但是* 2的情况,那就是普通的无效语法。
答案 1 :(得分:1)
定义大小为5的数组时,需要使用0到4之间的索引,但不要使用5 ...
你还需要在方法中包装初始化,或者只是在构造函数中进行。
public Listas(){
medicos = new Medico[5];
enfermeras = new Enfermera[5];
Medico med1 = new Medico(1, "Juan" , "Pérez", "6799652-3", "1234567870101", 89098, 15000, true);
Medico med2 = new Medico(2, "Luis", "Gutiérrez", "8964547-3", "9876543260101", 98554, 12000, false);
Medico med3 = new Medico(3, "Eduardo", "González", "8786456-6", "5642871750101", 5653, 17000, true);
Medico med4 = new Medico(4, "Guadalupe", "Torres", "5684873-1", "4562973920101", 10098, 17000, true);
Medico med5 = new Medico(5, "María", "Castillo", "8765485-7", "569395290101", 67965, 13000, false);
medicos[0] = med1;
medicos[1] = med2;
medicos[2] = med3;
medicos[3] = med4;
medicos[4] = med5;
}