Java feladatom egy-két aspektusában segítenél? Többi lent.
"Félkész"programom:
Feladatom a következő: Írnom kell egy ötöslottó generáló programot, ami összehasonlítja az én bevitt számaimat a random generált számokkal. Majd a szokásos kiírás, hogy gratulálunk ennyit találtál el, vagy semennyit stb.
Megvan már az 5 bevitt karakterem, feltétel teljesüléssel.
Kiirattam ,hogy mely számokból lehetett választani, majd az 5 random generált számot.
Kérdéseim:
1. Az a System.exit() jó? (Lefut, de programozói szemmel is megállja a helyett ott?)
2. A boolean ágban az if végén a break az miért kell? Anélkül is hibátlanul lefut a programom.
3. Honnan tudja a programom ,hogy a true érték a megfelelő? (Lehet hülyén kérdezem, de az ott nekem nem egyértelmű. A true értékről tudja, hogy csak azt engedheti át a programon és teheti bele a tömbbe?)
4. Hogyan tudnám a végét megcsinálni a feladatomnak? (Ezt a 2 tömbömet összehasonlítani) Tippek? -->*
*Nekem az lenne az ötletem igazából, hogy deklarálok ,int eltalaltSzamok=0'-at, és az egyik tömb első elemét végigfuttatom a másik tömbben. Ha talál egyezést, akkor 1-el megnöveli az eltalaltSzamok erteket. (majd a második-harmadik-negyedik-ötödik elemmel ugyanezt)
Így a végén, ha pl. ==2 (if fv.) akkor kiirja, hogy gratulálok kettesed van.
Ha jó is a gondolatmenetem, akkor abban segítsetek légyszíves, hogy ezt, hogyan vigyem be a gépbe. Ha rossz az egész, akkor meg vezessetek rá a megoldásra.
Köszönöm.
Esetleg lenne még egy kérdésem.
int lottoszamom1 = keyboard.nextInt();
Itt ügye, csak 1 karaktert tudok ezután bevinni. (Vagyis egy enter után kilép a fv-ből)
Az érdekelne, hogy ezt egy 5 elemű tömbben is megtudnám oldani? Leírom amivel próbálkoztam, de nem lett jó.
int[] lottoszamom1 = keyboard.nextInt(5 + ", ");
A célom az volna, hogy sortörés nélkül, sorköz és vessző hozzáadással kiírhassam azt pl. hogy: 5, 95, 65, 2, 1
Najó, vegyük végig.
1. It's okay.
2. A break, illetve continue kulcsszavak ciklusokra vannak hatással, a break megszakítja a ciklus futását, a continue pedig azonnal továbblépteti a ciklust. Az if végén levő break azt a célt szolgálja, hogy mivel már találtál egyezőséget, ezért fölösleges tovább futtatni a ciklust, ezért megszakítja azt.
3. Hogy micsoda? Nem értem a kérdést.
4. A probléma ott kezdődik, hogy eleve nincs is két tömböd. Te felvettél 5 külön változót az 5 bekért számnak, ahelyett, hogy ahogy a random generált számoknak, ennek is felvettél volna egy 5 elemű tömböt. De egyébiránt igen, nagyjából úgy kéne megcsinálni, amit te is felvázoltál.
Az adatbekérésről pedig: Amit te akarsz megoldható, de nem anynira egyszerűen, és fölöslegesen komplikálod vele a programodat. VISZONT, ha csak egyszerű szóközökkel választod el a számokat, akkor észre fogod venni, hogy alapból is működik. Ha nagyon érdekel, ez a kódrészlet kb megoldja a vesszővel elválasztott adatokat:
      Scanner sc = new Scanner(System.in).useDelimiter(",\\s?|\\s");
      int inputCount = 0;
      while(inputCount<5 && sc.hasNext())
      {
         if(sc.hasNextInt())
         {
            numbers[inputCount] = sc.nextInt();
            if(numbers[inputCount] < 1 || numbers[inputCount] > 90)
            {
               System.out.println("Invalid number provided: " + numbers[inputCount]);
               System.exit(1);
            }
            inputCount++;
         }
         else
         {
            System.out.println(sc.next());
         }
      }
      if(inputCount != 5)
      {
         System.out.println("Not enough numbers given!");
         System.exit(1);
      }
#3 Pár dolgot hozzátennék:
- a System.out.println(sc.next()) csak a tesztelés miatt lett kiírva, egyébként egy sc.next() elegendő oda.
- kicsit túlfejlesztettem a kódot, és igazából nagyobb hibatűrése van az alapvető elvárásoknál (akármilyen szóközzel vagy vesszővel elválasztott közbeékelt karakterláncot kiszűr hiba nélkül ami nem szám), pl. a következő input esetében is hiba nélkül beolvassa az 5 számot:
1,2,kiscica, 3, kutyuli, 4, 5
Ennek oka, hogy eredetileg egy egyszerű (ha szám, olvasd be, ha nem, lépj tovább) szisztémát akartam követni, csak aztán jöttem rá, hogy Javaban egy kissé kevésbé rugalmas az input feldolgozás mint pl C++ esetében. Ekkor jött a másik elképzelés, de a régi is benne maradt végül.
Mutatok egy példát:
pár javaslat:
* Használj tömböt a felhasználó által megadott és a nyerőszámok tárolására - így az ellenőrzések is egyszerűbbek.
* Szervezd ki a különböző részfeladatokat - számok bekérése, nyerőszámok kisorsolása, találatok megszámolása, ellenőrzések - különböző metódusokba. Átláthatóbb.
Ez, hogy telekommentelted, es fikazas helyett segitettel.. KOSZONOM, Nagyon koszonom! Meg ma este elkezdem komolyabban is tanulmanyozni.
Ha szabad megkerdeznem, tanar vagy?
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!