java 方法从类获取默认值的简单问题[已关闭]

qcuzuvrc  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(121)

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
我开始学习java,但我无法克服从类中获取默认值的方法的问题。代码是关于汽车和车库的。一切都按照我的意图工作,除了返回Samochod s1的默认值,而不是在主函数中设置的值。
主要:

public static void main(String[] args) {
        Samochod s1 = new Samochod("Fiat", "126p", 2, 650, 6.0);
        Samochod s2 = new Samochod("Syrena", "105", 2, 800, 7.6);
        Garaz g1 = new Garaz();
        g1.setAdres( "ul. Garażowa 1" );
        g1.setPojemnosc( 1 );
        Garaz g2 = new Garaz("ul. Garażowa 2", 2);
        g1.wprowadzSamochod(s1);
        g1.wypiszInfo();
        g1.wprowadzSamochod(s2);
        g2.wprowadzSamochod(s2);
        g2.wprowadzSamochod(s1);
        g2.wypiszInfo();
        g2.wyprowadzSamochod();
        g2.wypiszInfo();
        g2.wyprowadzSamochod();
        g2.wyprowadzSamochod();
     }
package Lab2_02;

public class Samochod {
    private String marka;
    private String model;
    private int iloscDrzwi;
    private int pojemnoscSilnika;
    private double srednieSpalanie;
    private static int iloscSamochodow = 0;

    public String getMarka() {
        return marka;
    }

    public String getModel() {
        return model;
    }

    public int getIloscDrzwi() {
        return iloscDrzwi;
    }

    public int getPojemnoscSilnika() {
        return pojemnoscSilnika;
    }

    public double getSrednieSpalanie() {
        return srednieSpalanie;
    }

    public void setMarka(String marka) {
        this.marka = marka;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public void setIloscDrzwi(int iloscDrzwi) {
        this.iloscDrzwi = iloscDrzwi;
    }

    public void setPojemnoscSilnika(int pojemnoscSilnika) {
        this.pojemnoscSilnika = pojemnoscSilnika;
    }

    public void setSrednieSpalanie(double stednieSpalanie) {
        this.srednieSpalanie = stednieSpalanie;
    }
    
    
    public Samochod() {
        marka = "nieznany";
        model = "nieznany";
        iloscDrzwi =  0;
        pojemnoscSilnika = 0;
        srednieSpalanie = 0.0;
        iloscSamochodow++;
    }
    
    public Samochod(String marka_, String model_, int iloscDrzwi_, int pojemnoscSilnika_, double srednieSpalanie_) {
        marka = marka_;
        model = model_;
        iloscDrzwi = iloscDrzwi_;
        pojemnoscSilnika = pojemnoscSilnika_;
        srednieSpalanie = srednieSpalanie_;
        iloscSamochodow++;
    }
    public double obliczSpalanie(double dlugoscTrasy) {
        double spalanie = (srednieSpalanie * dlugoscTrasy)/100;
        return spalanie;    
    }
    public double obliczKosztPrzejazdu(double dlugoscTrasy, double cenaPaliwa) {
        double kosztPrzejazdu = obliczSpalanie(dlugoscTrasy) *  cenaPaliwa;
        return kosztPrzejazdu;
    }
    public void wypiszInfo() { 
        System.out.println("Marka: " + marka);
        System.out.println("Model: " + model);
        System.out.println("Ilosc drzwi: " + iloscDrzwi);
        System.out.println("Pojemnosc silnika: " + pojemnoscSilnika);
        System.out.println("Srednie spalanie: " + srednieSpalanie);   
    }
    public static void wypiszIloscSamochodow() {
        System.out.println("Ilosc samochodow: " + iloscSamochodow);
    }
    
}
package Lab2_02;

public class Garaz {
    private String adres;
    private int pojemnosc;
    private int liczbaSamochodow = 0;
    private Samochod [] samochody;

    public String getAdres() {
        return adres;
    }

    public int getPojemnosc() {
        return pojemnosc;
    }

    public void setAdres(String adres) {
        this.adres = adres;
    }

    public void setPojemnosc(int pojemnosc) {
        this.pojemnosc = pojemnosc;
        samochody = new Samochod[pojemnosc];
    }
    
    public Garaz() {
        adres = "nieznany";
        pojemnosc = 0;
        samochody = null;
    }
    public Garaz(String adres_, int pojemnosc_) {
        adres = adres_;
        pojemnosc = pojemnosc_;
        samochody = new Samochod[pojemnosc];
    }
    public void wprowadzSamochod(Samochod s) {
        if(liczbaSamochodow >= pojemnosc) {
            System.out.println("W garazu jest maksymalna ilość pojazdow.");
        }
        else {
            samochody [liczbaSamochodow] = new Samochod();
            liczbaSamochodow++;                     
            System.out.println("Samochod zostal wprowadzony.");
        }        
    }
    public void wyprowadzSamochod() {
        if(liczbaSamochodow == 0) {
            System.out.println("W garazu nie ma zadnego auta.");
        }
        else {
            samochody [liczbaSamochodow-1] = null;
            liczbaSamochodow--;
            System.out.println("Samochod zostal wyprowadzony.");           
        }
    }
    public void wypiszInfo(){
        for(int i = 0; i <= liczbaSamochodow-1; i++){
            
            samochody[i].wypiszInfo();        
        }
    }
        
}

因此,我的问题是,而不是返回控制台信息我的车"菲亚特",它说"nieznany"从默认类。我知道这是一个简单的问题,但我不能过去几天。我的问题是与此行:

public void wypiszInfo(){
        for(int i = 0; i <= liczbaSamochodow-1; i++){

            samochody[i].wypiszInfo();

而不是显示这个:

Samochod zostal wprowadzony.
Marka: nieznany
Model: nieznany
Ilosc drzwi: 0
Pojemnosc silnika: 0
Srednie spalanie: 0.0

我不能让它显示这个:

Marka: Fiat
Model: 126p
Ilosc drzwi: 2
Pojemnosc silnika: 650
Srednie spalanie: 6.0
2ledvvac

2ledvvac1#

wprowadzSamochod(Samochod s)方法中,你创建了一个新的Samochod示例,而不是使用作为参数传递的示例,因为你有一个默认的构造函数,所以你总是使用它,将信息设置为默认值:

public void wprowadzSamochod(Samochod s) {
    if(liczbaSamochodow >= pojemnosc) {
        System.out.println("W garazu jest maksymalna ilość pojazdow.");
    }
    else {
        samochody [liczbaSamochodow] = new Samochod(); // <-- there
        liczbaSamochodow++;                     
        System.out.println("Samochod zostal wprowadzony.");
    }        
}

应该是什么样的:

public void wprowadzSamochod(Samochod s) {
    if(liczbaSamochodow >= pojemnosc) {
        System.out.println("W garazu jest maksymalna ilość pojazdow.");
    }
    else {
        samochody [liczbaSamochodow] = s; // <-- there
        liczbaSamochodow++;                     
        System.out.println("Samochod zostal wprowadzony.");
    }        
}

只是一个小建议:在for循环的退出条件中,你可以只使用i < max,而不是i <= max-1(例如在wypiszInfo()中)。

相关问题