2014-09-06 68 views
-2

我必须编写一个程序作为家庭作业,并且我遇到了一个问题,为此我无法找到解决方案。也许你们可以帮助我。 我有类:将对象添加到列表中 - 代码错误

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阵列medicos []。 med1 - 5的构造函数在另一个类Medico中。

我做错了什么建议?

+0

第1步:学习以可读方式缩进/格式化代码。 – 2014-09-06 21:31:04

+3

什么是具体的错误? – AstroCB 2014-09-06 21:31:06

+2

当您定义大小为5的数组时,您需要使用从0到4的索引,但不是5 ... – 2014-09-06 21:31:51

回答

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; 
  • * 1编译:这是一个成员变量med1的声明
  • * 2不编译,它的语法无效。

你可以在方法外有字段声明,但是* 2的情况,好吧,这只是普通的无效语法。

+0

谢谢,我不知道我不能在方法外指定medicos字段的值。现在它可以工作。 – BobaJ 2014-09-06 22:58:01

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; 
}