Kezdőoldal » Számítástechnika » Programozás » Miért nem működik az alábbi...

Miért nem működik az alábbi JÁVA kód megfelelően?

Figyelt kérdés

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";

}



}



2014. jan. 5. 22:54
 1/9 anonim ***** válasza:

charAt(i) < '0'


Ugyanis '0' != 0, csak ha előtte számmá konvertálod.

2014. jan. 5. 23:02
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:

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.

2014. jan. 5. 23:10
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
Tényleg, az ifekben nem and kell hanem or. || maybe.
2014. jan. 5. 23:12
Hasznos számodra ez a válasz?
 4/9 A kérdező kommentje:

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.

2014. jan. 6. 00:19
 5/9 anonim ***** válasza:
if (megfelel == true)
2014. jan. 6. 01:06
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:
Köszi, de sajnos így se megy :(
2014. jan. 6. 01:26
 7/9 anonim ***** válasza:

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).

2014. jan. 6. 04:05
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:

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.

2014. jan. 6. 07:53
 9/9 anonim ***** válasza:
Sikerült megoldani?
2014. jan. 27. 13:04
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!