2014-09-06 82 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; 
}