A feladat leírását, melynek a megoldását közzéteszem innen töltheted le. Ez a megoldás tömbbel dolgozik. Az adattároló osztályban egy új tulajdonságot is felveszek. Ez a feladat szerintem túl könnyű volt 🙂
Adattároló osztály:
/** * * @author https://webotlet.hu */ package webotlet_19majma_tantargyfelosztas; public class Adat { private String tanar; private String tantargy; private String osztaly; private int db; private boolean osztalyfonok; public Adat(String sor1, String sor2, String sor3, String sor4) { tanar = sor1; tantargy = sor2; osztaly = sor3; db = Integer.parseInt(sor4); if( tantargy.equals("osztalyfonoki")) { osztalyfonok = true; } } public String getTanar() { return tanar; } public String getTantargy() { return tantargy; } public String getOsztaly() { return osztaly; } public int getDb() { return db; } public boolean isOsztalyfonok() { return osztalyfonok; } @Override public String toString() { return "Adat{" + "tanar=" + tanar + ", tantargy=" + tantargy + ", osztaly=" + osztaly + ", db=" + db + ", osztalyfonok=" + osztalyfonok + '}'; } }
A feladat megoldásai:
/** * * @author https://webotlet.hu */ package webotlet_19majma_tantargyfelosztas; import java.io.IOException; import java.io.RandomAccessFile; import java.util.Scanner; public class Webotlet_19majma_tantargyfelosztas { public static void main(String[] args) { Adat[] adatok = null; try { RandomAccessFile raf = new RandomAccessFile("beosztas.txt", "r"); String sor; int db = 0; for( sor = raf.readLine(); sor != null; sor = raf.readLine() ) { db++; } adatok = new Adat[db / 4]; raf.seek(0); int hely = 0; for( sor = raf.readLine(); sor != null; sor = raf.readLine() ) { adatok[hely] = new Adat(sor, raf.readLine(), raf.readLine(), raf.readLine()); hely++; } raf.close(); } catch( IOException e ) { System.out.println("HIBA"); } // for( int i = 0; i < adatok.length; i++ ) // { // System.out.println(adatok[i].toString()); // } System.out.println("2. feladat"); System.out.println("A fajlban " + adatok.length + " bejegyzes van."); System.out.println("3. feladat"); int orak = 0; for( int i = 0; i < adatok.length; i++ ) { orak += adatok[i].getDb(); } System.out.println("Az iskolaban a heti osszoraszam: " + orak); System.out.println("4. feladat"); Scanner sc = new Scanner(System.in); System.out.print("Egy tanar neve= "); String tanar = sc.nextLine(); int tanarOrak = 0; for( int i = 0; i < adatok.length; i++ ) { if( adatok[i].getTanar().equals(tanar) ) { tanarOrak += adatok[i].getDb(); } } System.out.println("A tanar heti oraszama: " + tanarOrak); try { RandomAccessFile ki = new RandomAccessFile("of.txt", "rw"); ki.setLength(0); for( int i = 0; i < adatok.length; i++ ) { if( adatok[i].isOsztalyfonok() ) { ki.writeBytes(adatok[i].getOsztaly() + " - " + adatok[i].getTanar() + "\n"); } } } catch( IOException e ) { System.out.println("HIBA"); } System.out.println("6. feladat"); System.out.print("Osztaly= "); String osztaly = sc.nextLine(); System.out.print("Tantargy= "); String tantargy = sc.nextLine(); int db = 0; for( int i = 0; i < adatok.length; i++ ) { if( adatok[i].getOsztaly().equals(osztaly) && adatok[i].getTantargy().equals(tantargy) ) { db++; } } if( db == 2 ) // feltetelezzuk, hogy nincs nagyobb bontas { System.out.println("Csoportbontasban tanuljak."); } else { System.out.println("Osztalyszinten tanuljak."); } System.out.println("7. feladat"); String[] tanarok = new String[adatok.length]; int hely = 0; for( int i = 0; i < adatok.length; i++ ) { boolean benne = false; for( int j = 0; j < hely; j++ ) { if( tanarok[j].equals(adatok[i].getTanar()) ) { benne = true; break; } } if( !benne ) { tanarok[hely] = adatok[i].getTanar(); hely++; } } System.out.println("Az iskolaban " + hely + " tanar tanit."); } }
Ha hibát találsz benne, kérlek jelezd!