Forum » Programiranje » [Java] System.out.print = null
[Java] System.out.print = null
shadeX ::
pozdrav.
Imam sledeč problem. No bom kar prilepil kodo tukaj prvo.
Razred z imenom RegularWatch:
To je pa main razred:
Output vedno dobim:
Zakaj je tam null? kako bi dobil rezultat da recimo ura prikazuje 24urni čas ter Ni/je vodoodporta.
To je pač nek primer k sm si ga sam izmislil vendar mi dela probleme.
Imam sledeč problem. No bom kar prilepil kodo tukaj prvo.
Razred z imenom RegularWatch:
public class RegularWatch { private double time = 24; private boolean isWaterProof = false; public String waterP; public RegularWatch(double t, boolean wP) { this.time = t; this.isWaterProof = wP; } public double getTime() { return time; } public boolean wpBool() { return isWaterProof; } public String getWaterProofInfo() { if(isWaterProof == false) { waterP = " is not waterproof"; } else { waterP = " is waterproof"; } return waterP; } public void writeOut() { System.out.println("This watch shows time "+ time + " and "+ waterP); } }
To je pa main razred:
public class Main { public static void main(String[] args) { RegularWatch w1 = new RegularWatch(24, false); w1.writeOut(); } }
Output vedno dobim:
This watch shows time 24.0 and null
Zakaj je tam null? kako bi dobil rezultat da recimo ura prikazuje 24urni čas ter Ni/je vodoodporta.
To je pač nek primer k sm si ga sam izmislil vendar mi dela probleme.
Wrop ::
waterP je null zato ker ga nikjer ne spreminjaš oz ne kaže na noben String objekt. Takoj po konstruktorju naredi npr. w1.waterP = "poljuben string".
usoban ::
To kar je Wrop rekel.
V getWaterProofInfo() sicer nastavljas waterP, vendar te metode nikjer ne klices. Ali jo poklici rocno na objektu preden izpisujes, ali pa v konstruktorju.
V getWaterProofInfo() sicer nastavljas waterP, vendar te metode nikjer ne klices. Ali jo poklici rocno na objektu preden izpisujes, ali pa v konstruktorju.
Zgodovina sprememb…
- spremenil: usoban ()
shadeX ::
ola ola :D sem poklical takoj po ustvarjenm objektu in sedaj dela. kako bi pa lahko še na drug način naredil? recimo kot si rekel usoban:
ali pa v konstruktorju.
Zgodovina sprememb…
- spremenil: shadeX ()
usoban ::
public RegularWatch(double t, boolean wP) { this.time = t; this.isWaterProof = wP; this.getWaterProofInfo(); }
bi delalo.
Sicer metoda vraca String, ampak znotraj nje nastavljas lastnost objekta tako da zadeva prav tako dela.
Zgodovina sprememb…
- spremenil: usoban ()
Spura ::
Bedarija je to v konstruktorju klicat.
Spremeni writeOut.
Iz:
v
Ideja, da naredis lazy inicializacijo v getterju, potem pa uporabljas spremenljivko namesto getterja v izrazih, in si potem prisiljen getter klicat v konstruktorju, je zelo slaba praksa.
V osnovi bi jst ukinil spremenljivko waterP, ker nima nobene vsebine in je v celoti dolocena s spremenljivko isWaterProof.
Torej zbrises spremenljivko waterP in spremenis getWaterProofInfo v
Spremeni writeOut.
Iz:
public void writeOut() { System.out.println("This watch shows time "+ time + " and "+ waterP); }
v
public void writeOut() { System.out.println("This watch shows time "+ time + " and "+ getWaterProofInfo()); }
Ideja, da naredis lazy inicializacijo v getterju, potem pa uporabljas spremenljivko namesto getterja v izrazih, in si potem prisiljen getter klicat v konstruktorju, je zelo slaba praksa.
V osnovi bi jst ukinil spremenljivko waterP, ker nima nobene vsebine in je v celoti dolocena s spremenljivko isWaterProof.
Torej zbrises spremenljivko waterP in spremenis getWaterProofInfo v
if(isWaterProof) { // primerjava z booleanom ne nepotrebna, ker if uporablja boolean izraze return " is waterproof"; } else { return " is not waterproof"; }
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | problemi z javoOddelek: Programiranje | 1117 (722) | MrStein |
» | [Java] Objekt poslan k metodi v kakšnem stanju?Oddelek: Programiranje | 1546 (993) | shadeX |
» | [Java] CastanjeOddelek: Programiranje | 1531 (1386) | fiction |
» | [JAVA] zaustavitev niti (threadov)Oddelek: Programiranje | 3171 (3171) | morbo |
» | [Naloga][Java] UlomkiOddelek: Programiranje | 2660 (2508) | SkIDiver |