A feladat megoldása még nem teljes!
Csak akkor olvass tovább, ha a növények feladatot megoldottad, vagy nem sikerült megoldani.
A letölthető tömörített állományban megtalálod a NetBeans-ben megnyitható projectet. Amennyiben Geany szerkesztővel kívánod megtekinteni a megoldást, akkor töröld ki a források elejéről a következő sorokat:
package webotlet_novenyek;
A megoldásban két osztály található. A Noveny osztály felelős az adattárolásért, a Webotlet_novenyek pedig a vezérlőprogram, mely a forrás beolvasását, valamint a feladatok megoldását tartalmazza.
Noveny osztály az adattárolásra:
/** * * @author http://webotlet.hu */ package webotlet_novenyek; public class Noveny { private String nev; private String miert; private int kezd; private int veg; private int gyido; private int[] honapok; public Noveny( String[] tomb ) { nev = tomb[0]; miert = tomb[1]; kezd = Integer.parseInt( tomb[2] ); veg = Integer.parseInt( tomb[3] ); if( kezd <= veg ) { gyido = veg - kezd + 1; } else { gyido = 13 - kezd + veg; } honapok = ekkorGyujtik(); } public String getNev() { return nev; } public String getMiert() { return miert; } public int getKezd() { return kezd; } public int getVeg() { return veg; } public int getGyido() { return gyido; } public int[] getHonapok() { return honapok; } private int[] ekkorGyujtik() { int[] tomb = new int[gyido]; int db = 0; if( kezd <= veg ) { for (int i = kezd; i <= veg; i++) { tomb[db++] = i; } } else { for (int i = kezd; i < 13; i++) { tomb[db++] = i; } for (int i = 1; i <= veg; i++) { tomb[db++] = i; } } return tomb; } public String ekkorGyujtikString() { StringBuilder sb = new StringBuilder(); for (int i : honapok) { sb.append( i + " " ); } return sb.toString(); } public boolean gyujtikEkkor( int honap ) { return honap >= kezd && honap <= veg; } @Override public String toString() { return "Noveny{" + "nev=" + nev + ", miert=" + miert + ", kezd=" + kezd + ", veg=" + veg + ", gyido=" + gyido + ", honapok=" + ekkorGyujtikString() + '}'; } }
A main()-t tartalmazó osztály, mely a fájlkezelést és a feladatokat tartalmazza:
/** * * @author http://webotlet.hu */ package webotlet_novenyek; import java.io.*; public class Webotlet_novenyek { public static void main( String[] args ) { RandomAccessFile raf; String sor; Noveny[] novenyek; int db; try { // 1. feladat raf = new RandomAccessFile( "noveny.txt", "r" ); // sorok megszamlalasa db = 0; for (sor = raf.readLine(); sor != null; sor = raf.readLine()) { db++; } novenyek = new Noveny[db]; // adatok beolvasasa db = 0; raf.seek( 0 ); for (sor = raf.readLine(); sor != null; sor = raf.readLine()) { novenyek[db++] = new Noveny( sor.split( ";" ) ); } /* for( Noveny n : novenyek) { System.out.println( n.toString() ); } */ // 2. feladat System.out.println( "\n2. feladat" ); for (Noveny n : novenyek) { if( n.getNev().equalsIgnoreCase( "gyongyvirag" ) ) { System.out.println( n.getMiert() ); break; } } // 3. feladat System.out.println( "\n3. feladat" ); int leveldb = 0; for (Noveny n : novenyek) { if( n.getMiert().equals( "level" ) ) { leveldb++; } } System.out.println( "Ennyi novenyt gyujtenek a leveleert: " + leveldb ); // 4. feladat System.out.println( "\n4. feladat" ); // 0 1 2 3 4 5 6 7 8 9 10 11 12 // { 0,0,0,0,0,1,2,0,0,0, 0, 0, 0 } int[] honapKezdDb = new int[12]; for (int i = 0; i < novenyek.length; i++) { honapKezdDb[novenyek[i].getKezd() - 1]++; } int kezdMax = 0; for (int i = 1; i < honapKezdDb.length; i++) { if( honapKezdDb[i] > honapKezdDb[kezdMax] ) { kezdMax = i; } } for (int i = 0; i < honapKezdDb.length; i++) { if( honapKezdDb[i] == honapKezdDb[kezdMax] ) { System.out.println( "A " + (i + 1) + ". honapban kezdik " + "gyujteni a legtobb novenyt." ); } } // 5. feladat System.out.println( "\n5. feladat" ); for (int i = 1; i < honapKezdDb.length; i++) { if( honapKezdDb[i] == 0 ) { System.out.println( "A " + (i + 1) + ". honapban semmit " + "nem kezdenek gyujteni." ); } } // 6. feladat System.out.println( "\n6. feladat" ); int egyszodb = 0; for (int i = 0; i < novenyek.length; i++) { if( novenyek[i].getNev().contains( " " ) ) { egyszodb++; } } System.out.println( "Ennyi noveny neve all egy szobol: " + egyszodb ); // 7. feladat System.out.println( "\n7. feladat" ); int osszel = 0; for (int i = 0; i < novenyek.length; i++) { if( novenyek[i].getKezd() >= 9 && novenyek[i].getKezd() <= 11 ) { osszel++; } } System.out.println( "Ennyi novenyt gyujtenek kezdenek " + "osszel gyujteni: " + osszel ); // 8. feladat System.out.println( "\n8. feladat" ); int nyarElejeDb = 0; for (int i = 0; i < novenyek.length; i++) { if( novenyek[i].getKezd() == 6 ) { nyarElejeDb++; } } System.out.println( "Ennyi novenyt gyujtenek a nyar elejetol: " + nyarElejeDb ); // 9. feladat System.out.println( "\n9. feladat" ); int maxGyIdo = 0; for (int i = 1; i < novenyek.length; i++) { if( novenyek[i].getGyido() > novenyek[maxGyIdo].getGyido() ) { maxGyIdo = i; } } for (int i = 0; i < novenyek.length; i++) { if( novenyek[i].getGyido() == novenyek[maxGyIdo].getGyido() ) { System.out.println( novenyek[i].getNev() ); } } // 10. feladat System.out.println( "\n10. feladat" ); String csalan = ""; for (int i = 0; i < novenyek.length; i++) { if( novenyek[i].getNev().equalsIgnoreCase( "csalan" ) ) { csalan = novenyek[i].getMiert(); break; } } for (int i = 0; i < novenyek.length; i++) { if( novenyek[i].getMiert().equals( csalan ) && !novenyek[i].getNev().equalsIgnoreCase( "csalan" ) ) { System.out.println( novenyek[i].getNev() ); } } // 11. feladat System.out.println( "\n11. feladat" ); int viragdb = 0; for (int i = 0; i < novenyek.length; i++) { if( novenyek[i].getMiert().toLowerCase().contains( "virag" ) ) { viragdb++; } } System.out.println( "Ennyi novenyt gyujtenek viraggal " + "kapcsolatban: " + viragdb ); // 13. feladat boolean van = false; System.out.println( "\n13. feladat" ); for (int i = 0; i < honapKezdDb.length; i++) { if( honapKezdDb[i] == 0 ) { van = true; break; } } if( van ) { System.out.println( "Van olyan honap, amikor semmit nem " + "kezdenek gyujteni." ); } else { System.out.println( "Nincs olyan honap, amikor semmit " + "nem kezdenek gyujteni." ); } // 14. feladat System.out.println( "\n14. feladat" ); int[] honapGyujtDb = new int[12]; for (int i = 0; i < novenyek.length; i++) { for (int j = 0; j < novenyek[i].getHonapok().length; j++) { honapGyujtDb[novenyek[i].getHonapok()[j] - 1]++; } } int honapGyujtMax = 0; for (int i = 0; i < honapGyujtDb.length; i++) { if( honapGyujtDb[i] > honapGyujtDb[honapGyujtMax] ) { honapGyujtMax = i; } } for (int i = 0; i < honapGyujtDb.length; i++) { if( honapGyujtDb[i] == honapGyujtDb[honapGyujtMax] ) { System.out.println( (i + 1) + ". honapban gyujtik a legtobb " + "fajta novenyt." ); } } // 15. feladat System.out.println( "\n15. feladat" ); Noveny csere; for (int i = 0; i < novenyek.length - 1; i++) { for (int j = i + 1; j < novenyek.length; j++) { if( novenyek[i].getKezd() > novenyek[j].getKezd() ) { csere = novenyek[i]; novenyek[i] = novenyek[j]; novenyek[j] = csere; } } } for (Noveny n : novenyek) { System.out.println( n.toString() ); } } catch ( IOException e ) { System.out.println( "HIBA" ); } } }