Kezdőoldal » Számítástechnika » Programozás » Hogy kéne megoldani ezt a...

Hogy kéne megoldani ezt a feladatot while ciklussal?

Figyelt kérdés

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



2021. febr. 18. 11:45
 1/7 anonim ***** válasza:
90%

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.

2021. febr. 18. 11:56
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

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)

2021. febr. 18. 11:59
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

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;

}


}


}


}

2021. febr. 18. 12:09
 4/7 anonim ***** válasza:
100%

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.

2021. febr. 18. 12:43
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:
65%
Az nem a < 10 VAGY a > 99 akart lenni?
2021. febr. 18. 13:14
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:
83%

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

2021. febr. 18. 14:18
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:
100%

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.

2021. febr. 18. 19:39
Hasznos számodra ez a válasz?

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

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!