Programozás feladatomban segítene valaki?
Írj egy olyan programot, melyben as felhasználó int értékeket ír be egymás után. A program akkor állítsa le a ciklust, amikor a felhasználó olyan számot ad meg, amely nem pozitív (mint például 0 vagy -17). A ciklus összes lefutása után pedig írja ki a legnagyobb számot.
Eddigi kész programom:
........................................
import java.util.Scanner;
import static java.lang.System.out;
public class IntBekeresekGyak {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
//out.print("Please type a number: ");
int tipps = keyboard.nextInt();
while (tipps > 0) {
//out.print("Another: ");
tipps = keyboard.nextInt();
}
// a fasdzomat beleverem h nem mukodik
out.println();
out.println("The biggest number: ");
keyboard.close();
}
}
.......................................
Próbálkoztam Math.max(null, tipps)-el, de nem működik.. Már egész sok ideje ez fölött ülök, de a végét, hogy kiírja a legnagyobb számot az nem megy. Ehhez szeretnék segítséget kérni. (Java)
Köszönöm előre is!
Felveszel egy legnagyobb szám változót a ciklus előtt.
Pl max néven.
int tipps = keyboard.nextInt();
max = tipps;
while (tipps > 0) {
//out.print("Another: ");
tipps = keyboard.nextInt();
if (tipps>max)
max = tipps;
}
A ciklus után kiíratod a max-ot.
Igen, tudom, hogy nem látszódik, mert már töröltem onnan, de azért ,hogy ne maradjon üresen akkor.
while (tipps > 0) {
//out.print("Another: ");
tipps = keyboard.nextInt();
}
out.println();
out.println("The biggest number: " + Math.max(null, tipps));
És persze, a legelejére az import Math.max-ot beírni.
Így nézett ki amivel én próbálkoztam.
Köszönöm a kész programot, működik, viszont sajnos nem értem a logikáját. (lehet már sokat ültem amúgy is az egész fölött, fáradok..)
Ha nem nagy szívesség, leírnád, hogy miért működik így a program? Mi történik a while cikluson belül az if utasításnál, amiért kint meg kiírja a helyes megoldást?
Köszönöm ezt is előre is!
Ez azért nem működik, mert egy változód van a tipps.
Ezt folyton felülírod az új értékekkel így a max érték elveszik.
"
while (tipps > 0) {
//out.print("Another: ");
tipps = keyboard.nextInt();
}
"
Pl beírod, hogy 3,100,5
Akkor 1. körben tipps=3
Utána tipps = 100
Utána tipps = 5
De amikor 5 lett, akkor csak ez az egy értéke van, ő nem emlékszik arra, hogy korábban 100 is volt.
Így ezzel semmit értelmesebb nem fogsz kapni:
Math.max(null, tipps)
Ezért azt kell csinálni, hogy egy külön változóba elrakod a max-ot.
tipps=3, max=3
Utána a cikluson belül mindig új tippeket kapsz.
tipps = 100, ha ez nagyobb, mint a max, akkor a maxot átírod erre, ha en mnagyobb, akkor a maxhoz nem nyúlsz.
Egy if-el ellenőrződ.
tipps = 100 => max=100
tipps=5 => max marad 100.
Hát te nagy király vagy, elsőre felfogtam, nem is volt nehéz!
Most fogom kezdeni a for utasítás témakört!
Kössz szépen mégegyszer!
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!