Keresés

Új hozzászólás Aktív témák

  • bucsupeti

    senior tag

    válasz kutga #10852 üzenetére

    A static metódus arra enged következtetni hogy valószínű ugyan abban az osztályban van ez a kaloriaKiir metódus amiben a main() és azért static hogy tudd meghívni a main-ben.
    Lehet hogy a vizsgára amire készülsz ez jó és elegendő. Én a következő osztályokkal dolgoznék:
    Gyumolcs : egyetlen gyümölcs adatait tároló POJO osztály. semmi extra metódus nem kell ebbe. Max a toString-et írd felül hogy az objektum értékeit adja vissza.
    KaloriaTabla : lenne benne egy ArrayList<Gyumolcs> lista, egy adatbeolvasó metódus ami feltöltené ezt a listát. Konstruktorba feltölteném a listát. Kell egy kereső metódus ami egy string alapján keres a listában a gyümölcs neve alapján és Gyumolcs-öt adnék vissza, vagy null-t ha nincs. (Ez az osztály lehetne akár singleton is, ha már tanultátok)
    A futtató osztályban (amiben a main() van), megírnám a felhasználói felületet, menüt, a névbekérést stb. Itt példányosítanám a KaloriaTabla-t és ennek a kereső metódusát hívogatnám.
    Igaza van Sirpi kollégának abban hogy a contains használata nem a legjobb megoldás. Ha contains-t használsz akkor kezeld úgy hogy nem csak egy hanem több gyümölcsöt is kaphatsz eredményül, és ilyenkor minden találatot jeleníts meg.

  • Sirpi

    senior tag

    válasz kutga #10852 üzenetére

    Ez a rész háromszor is szerepel: gyum.toString().contains(nev)

    Egyrészt a harmadik automatikusan teljesülni fog, elhagyható, egyetlen vizsgálat is elég. Másrészt gondolom az elso gyum helyett az ertekek változót akartad használni, így az értékek.contains(nev) pont az, amire szükséged van, sőt, a toString-ezés miatt ha akár egyetlen betűt írsz be, ami a felsorolt gyümölcsök valamelyikében szerepel, azt is el fogja fogadni, nem néz teljes egyezést. Kicsit egyszerűsítve:

    public static void kaloriaKiir(List<Gyumolcs> ertekek) {

            Scanner scan = new Scanner(System.in, "ISO-8859-2");
            System.out.println("Kérem a gyümölcs nevét: ");
           String nev;
           while (!ertekek.contains(nev = scan.nextLine())) {
                   System.out.println("Nem megfelelő név, újat kérek!");
           }

             System.out.println("Kérem a mennyiséget grammban: ");
             int menny = scan.nextInt();

             for (Gyumolcs gyum : ertekek) {
                 if (nev.equals(gyum.Megnevezes)) {
                     System.out.println(menny + " gramm " + gyum.Megnevezes + " " + gyum.kcal / 100 * menny + " gramm kalóriát tartalmaz.");

                 }
           }

       }

Új hozzászólás Aktív témák