Hogy kéne megoldani ezt a feladatot while ciklussal?
Nos, az lenne a feladatom, hogy írnom kellene egy olyan JAVA programot, ami sorban bekér egész számokat, ha nem kétjegyű a szám akkor ki kell írnia a "jó szám" szöveget, ha viszont kétjegyű akkor ki kell lépnie. 2 hete kezdtem tanulgatni a programozást és többször nekiestem ennek a feladatnak, de nem tudom mit rontok el.
Példa:
Írj be számokat! Ha kétjegyű, kilép!
1
jó szám
123
jó szám
23
Nem szakterületem a Java, de úgy tudom, a while ott is az előltesztelő ciklust jelenti. (Nem keverendő a do..while ciklussal, ami hátultesztelő, és tök ideális lenne jelen helyzetben.)
Szóval: létrehozol egy logikai típusú változót még a cikluson kívül, és igazra állítod. A ciklusod addig fog futni, ameddig ez a változó igaz értékű.
A ciklusmagban bekéred a számot. Megnézed, hogy nagyobb vagy egyenlő-e, mint 10, ÉS kisebb vagy egyenlő-e, mint 99. Így meg tudod állapítani, hogy kétjegyű-e. Ezt más módon is meg lehet oldani, de szerintem így a legegyszerűbb. Ha mindkét feltétel igaz, tehát kétjegyű, akkor a ciklus feltételének adott logikai változót hamista állítja, ezzel a következő ciklusiteráció már nem fut le.
Csinálhatod azt is, hogy
While (1) /*ha ez nem működik akkor a while (true)*/
Ezen belül megírod azt hogy kérjen egy számot, ha pedig nem kétjegyű akkor lépjen ki.
A kétjegyűt meg lehetne úgy csinálni, hogy egy tömbe olvasod be a számjegyeket, csinálsz egy változót, ami beolvassa a tömben lévő számjegyeket (a tömbök elemeinek az indexét)
Köszönöm az eddigi válaszokat. Én is az eddigi leírtak alapján kezdtem, de valami nem klappol a dologban (akármi a bevitt szám, kilép egyből).
Scanner sc = new Scanner(System.in);
System.out.println("Írj be számokat! Ha kétjegyű, kilép!");
boolean futas = true;
futas = true;
while (futas) {
int a = sc.nextInt();
if (a < 10 && a > 99) {
System.out.println("jó szám");
} else {
futas = false;
}
}
}
}
Milyen feltételt írtál abba a ciklusba jóember?
a < 10 && a > 99
Ha a kisebb mint 10 ÉS a nagyobb mint 99.
Szerinted mikor fog ez teljesülni?
Ilyen szám nincs, tehát bármilyen számot írsz be, a feltétel sosem teljesül, a "futas" értéke false lesz.
A 10 es logaritmussal megtudhatod hogy egy szám hány számjegyű. Logaritmus eredményül tudja adni hogy x et hányadik hatványra kell emelni ahhoz hogy y kapj eredményül.
darab = log10(szam)+1
Ez a két sor is felesleges, mert az elsővel már beállította az értéket true-ra, nem kell megismételni:
boolean futas = true;
futas = true;
A hibát persze nem ez okozza. A helyes megoldás az #5-ösnél van, hogy miért nem működik arra a választ a #4-esnél találod.
További 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!