Miért nem működik az alábbi JÁVA kód megfelelően?
A feladat, hogy a Márka csak 3 karakter lehet amiből az első nagy betű a másik kettő szám kell legyen, ellenkező esetben a márkanév A00 lesz. Erre írtam az alábbi kódot.
Mégis mikor példányosítok bármit írhatok a márka nevéhez, simán engedi létrehozni akárhány karakter és akármi van benne. Mit ronthattam el? Köszi a segítséget
public void setMárka(String márka) {
boolean megfelel = true;
if (márka.length() != 3) {
megfelel = false;
}
if ((márka.charAt(0) < 'A') && ((márka.charAt(0) > 'Z'))) {
megfelel = false;
}
for (int i = 1; i < márka.length(); i++) {
if ((márka.charAt(i) < 0) && (márka.charAt(i) > 9)) {
megfelel = false;
}
}
if (megfelel = true) {
this.márka = márka;
} else {
this.márka = "A00";
}
}
charAt(i) < '0'
Ugyanis '0' != 0, csak ha előtte számmá konvertálod.
Remélem nem a függvényt akarod példányosítani.
Amúgy
if(marka.length()!=3){
megfelel=false
}else if(stmt 2){
}else if(stmt 3){
}stb...
Else if-fel vizsgáld. Mert ha valamelyik feltétel nem teljesül, akkor false és nem kell tovább vizsgálni.
A 2. if-ben fordítva van a relációjelek.
A 3. if-ed sem jó.
És ékezetes karaktereket sem használnék.
Az ékezetes karakterek a feladat kiírásában szerepelnek ezzel nem tudok mit tenni.
A vagyot benéztem azt köszi.
A probléma viszont akkor is fennáll ha csak annyit hagyok benne, hogy csak 3 karakteres nevet fogadjon el. Próbálom részletezni, remélem a tanár nem jár ide :)
A fenti részlet egy beállító metódus erre:
class Adathordozó {
private String márka;
private int kapacitás;
public Adathordozó(String márka, int kapacitás) {
this.márka = márka;
this.kapacitás = kapacitás;
}
Ehhez írni kellett egy második osztályt ami örököl az elsőből, ezt így csináltam:
class Pendrive extends Adathordozó {
private boolean nyakbaakasztható;
public Pendrive(boolean nyakbaakasztható, String márka, int kapacitás) {
super(márka, kapacitás);
this.nyakbaakasztható = nyakbaakasztható;
}
A példányosítást egy Main nevű osztályban kellett létrehozni:
public class Main {
public static void main(String[] args) {
Pendrive Pendrive=new Pendrive(true,"*22bb",-1);
System.out.println(Pendrive);
}
}
A példánál szándékosan 5 karaktert írtam a Stringhez, de simán beveszi és kiírja pedig elvileg A00-t kellene írnia.
Miért true-val nyitsz?
Még a memfelel sem kellene, én személy szerint úgy
csinálnám, ha valamelyik filteren megbukik, akkor
return-t a függvénynek (persze előtte beállítanám A00-ra).
Ezen már én is gondolkoztam, szerintem csak azért mert órán így csináltunk egyet és azt másoltam :)
Közben lehet, hogy rájöttem, ugyanis az órán megcsinált is enged beírni példányosításkor, csak ha a felvitelnél a felhasználó ír mást akkor változtat. Ezt még kipróbálom este ha sikerül megírni a program végét és majd jelzek.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!