public class Asunto {
private int huoneita;
private int nelioita;
private int neliohinta;
public Asunto(int huoneita, int nelioita, int neliohinta) {
this.huoneita = huoneita;
this.nelioita = nelioita;
this.neliohinta = neliohinta;
}
public boolean suurempi(Asunto verrattava) {
if (this.nelioita < verrattava.nelioita) {
return false;
} else {
return true;
}
}
public int hintaero(Asunto verrattava) {
if (this.neliohinta > verrattava.neliohinta) {
this.neliohinta = (this.neliohinta * this.nelioita) - (verrattava.neliohinta * verrattava.nelioita);
return this.neliohinta;
}
if (this.neliohinta == verrattava.neliohinta && this.nelioita > verrattava.nelioita) {
return (verrattava.neliohinta * verrattava.nelioita) - (this.neliohinta * this.nelioita);
}
if (this.neliohinta == verrattava.neliohinta && this.nelioita == verrattava.nelioita
|| this.huoneita > verrattava.huoneita) {
}
return (verrattava.neliohinta * verrattava.nelioita) - (this.neliohinta * this.nelioita);
}
public boolean kalliimpi(Asunto verrattava) {
if (this.neliohinta < verrattava.neliohinta) {
return false;
}
if (this.neliohinta == verrattava.neliohinta && this.nelioita > verrattava.nelioita) {
return false;
}
if (this.neliohinta == verrattava.neliohinta && this.nelioita == verrattava.nelioita
|| this.huoneita > verrattava.huoneita) {
}
return true;
}
}
-------------------------------------------------------------------------------------------------------
public class Main {
public static void main(String[] args) {
// voit kirjoittaa testikoodia tänne
Asunto eiraYksio = new Asunto(1, 20, 1000);
Asunto kallioKaksio = new Asunto(2, 30, 2000);
Asunto jakomakiKolmio = new Asunto(2, 23, 1500);
System.out.println(eiraYksio.suurempi(kallioKaksio));
System.out.println(jakomakiKolmio.suurempi(kallioKaksio));
System.out.println("");
System.out.println(eiraYksio.hintaero(kallioKaksio));
System.out.println(kallioKaksio.hintaero(eiraYksio));
System.out.println("");
System.out.println(eiraYksio.kalliimpi(kallioKaksio));
System.out.println(jakomakiKolmio.kalliimpi(kallioKaksio));
}
}
Hintaero kohta ei toimi testeissä ja pitäisi tulostaa tyyliin: 22500 ja 40000 mutta testit näyttää 1165500. Että mikä siinä kusee?
private int huoneita;
private int nelioita;
private int neliohinta;
public Asunto(int huoneita, int nelioita, int neliohinta) {
this.huoneita = huoneita;
this.nelioita = nelioita;
this.neliohinta = neliohinta;
}
public boolean suurempi(Asunto verrattava) {
if (this.nelioita < verrattava.nelioita) {
return false;
} else {
return true;
}
}
public int hintaero(Asunto verrattava) {
if (this.neliohinta > verrattava.neliohinta) {
this.neliohinta = (this.neliohinta * this.nelioita) - (verrattava.neliohinta * verrattava.nelioita);
return this.neliohinta;
}
if (this.neliohinta == verrattava.neliohinta && this.nelioita > verrattava.nelioita) {
return (verrattava.neliohinta * verrattava.nelioita) - (this.neliohinta * this.nelioita);
}
if (this.neliohinta == verrattava.neliohinta && this.nelioita == verrattava.nelioita
|| this.huoneita > verrattava.huoneita) {
}
return (verrattava.neliohinta * verrattava.nelioita) - (this.neliohinta * this.nelioita);
}
public boolean kalliimpi(Asunto verrattava) {
if (this.neliohinta < verrattava.neliohinta) {
return false;
}
if (this.neliohinta == verrattava.neliohinta && this.nelioita > verrattava.nelioita) {
return false;
}
if (this.neliohinta == verrattava.neliohinta && this.nelioita == verrattava.nelioita
|| this.huoneita > verrattava.huoneita) {
}
return true;
}
}
-------------------------------------------------------------------------------------------------------
public class Main {
public static void main(String[] args) {
// voit kirjoittaa testikoodia tänne
Asunto eiraYksio = new Asunto(1, 20, 1000);
Asunto kallioKaksio = new Asunto(2, 30, 2000);
Asunto jakomakiKolmio = new Asunto(2, 23, 1500);
System.out.println(eiraYksio.suurempi(kallioKaksio));
System.out.println(jakomakiKolmio.suurempi(kallioKaksio));
System.out.println("");
System.out.println(eiraYksio.hintaero(kallioKaksio));
System.out.println(kallioKaksio.hintaero(eiraYksio));
System.out.println("");
System.out.println(eiraYksio.kalliimpi(kallioKaksio));
System.out.println(jakomakiKolmio.kalliimpi(kallioKaksio));
}
}
Hintaero kohta ei toimi testeissä ja pitäisi tulostaa tyyliin: 22500 ja 40000 mutta testit näyttää 1165500. Että mikä siinä kusee?
Vastaukset 5
Vanhimmat
Jotain huomioita
1. hintojen käsittely olisi varmasti paljon helpompaa jos Asunnolla olisi metodi vaikkapa "laskeHinta" joka palauttaa kyseisen asunnon hinnan.
2. suurempi metodista voit poistaa turhat if lausekkeet kokonaan tyyliin
return this.nelioita >= verrattava.nelioita
3. hintaero metodissa muokkaat asunnon neliohintaa. Joko se on väärä toiminnallisuus tai metodin nimi on väärä.. luulenpa että hintaeron laskeminen helpottuu tekemällä tuon laskeHinta metodin joten ei siitä sen enempää
4. mikä merkitys on muuttujalla huoneita? Ei vaikuta hintaan mutta käytät joissain vertailuissa
Koska en tosiaan osaa sitä kohtaa tehdä niin pistin sen huoneita vaan siihen kohtaan ja ei varmasti vaikuta mitään kunhan laitoin ja ohjeissa sanotaan, että neliöt kertaa neliöidenhinnan itseisarvo. Mutta katotaan jos sen saisi toimimaan.
Tekisitkö tänne oman versiosi tuosta jos vaikka se toimisi ja laita se sitten tänne.
Sori, mutta en tee toisten kotitehtäviä :)
No älä tee mitään ja sitten ei tule mitään ja tämä ei ole kotitehtävä. Voi katsoa itse täältä: http://mooc.cs.helsinki.fi/ohjelmointi/materiaali-k2013/viikko-5 ja etsi komennolla mennä tehtävään 87.