A feladat leírását, melynek a megoldását közzéteszem innen töltheted le. A megoldást átírtam listára, ami a 7. feladatban több helyen is egyszerűsítette a dolgom, valamint a beolvasás is rövidebb lett.
Adattároló osztály:
/** * * @author https://webotlet.hu */ package webotlet_17okt_hianyzasok_v2; public class Hianyzo { private String nev; private int honap; private int nap; private String hianyzas; public Hianyzo(String[] tomb, String datum) { nev = tomb[0] + " " + tomb[1]; String[] tmp = datum.split(" "); honap = Integer.parseInt(tmp[1]); nap = Integer.parseInt(tmp[2]); hianyzas = tomb[2]; } public String getNev() { return nev; } public int getHonap() { return honap; } public int getNap() { return nap; } public String getHianyzas() { return hianyzas; } @Override public String toString() { return "Hianyzo{" + "nev=" + nev + ", honap=" + honap + ", nap=" + nap + ", hianyzas=" + hianyzas + '}'; } }
A feladat megoldásai:
/** * * @author https://webotlet.hu */ package webotlet_17okt_hianyzasok_v2; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.Scanner; public class Webotlet_17okt_hianyzasok_v2 { public static void main(String[] args) { ArrayList<Hianyzo> hianyzasok = new ArrayList<>(); try { RandomAccessFile raf = new RandomAccessFile("naplo.txt", "r"); String sor; String datum = ""; for( sor = raf.readLine();sor != null; sor = raf.readLine() ) { if( sor.charAt(0) == '#' ) { datum = sor; } else { hianyzasok.add(new Hianyzo(sor.split(" "), datum)); } } raf.close(); } catch( IOException e ) { System.out.println("HIBA"); } // for( int i = 0; i < hianyzasok.length; i++ ) // { // System.out.println(hianyzasok[i].toString()); // } System.out.println("2. feladat"); System.out.println("A naploban " + hianyzasok.size() + " bejegyzes van."); System.out.println("3. feladat"); int igazolt = 0; int igazolatlan = 0; for( Hianyzo hianyzo : hianyzasok) { for( int j = 0; j < 7; j++ ) { if( hianyzo.getHianyzas().charAt(j) == 'X' ) { igazolt++; } else if( hianyzo.getHianyzas().charAt(j) == 'I') { igazolatlan++; } } } System.out.println("Az igazolt hianyzasok szama " + igazolt + ", az igazolatlanoke " + igazolatlan + " ora."); System.out.println("5. feladat"); Scanner sc = new Scanner(System.in); System.out.print("A honap sorszama="); int honap = sc.nextInt(); System.out.print("A nap sorszama="); int nap = sc.nextInt(); System.out.println("Az adott napon " + hetnapja(honap, nap) + " volt."); System.out.println("6. feladat"); sc = new Scanner(System.in); System.out.print("A nap neve="); String napnev = sc.nextLine(); System.out.print("Az ora sorszama="); int sorszam = sc.nextInt(); int hianyzasDb = 0; for( Hianyzo hianyzo : hianyzasok) { if( hetnapja(hianyzo.getHonap(), hianyzo.getNap()).equals(napnev) ) { if( hianyzo.getHianyzas().charAt(sorszam - 1) == 'X' || hianyzo.getHianyzas().charAt(sorszam - 1) == 'I' ) { hianyzasDb++; } } } System.out.println("Ekkor osszesen " + hianyzasDb + " ora hianyzas tortent."); System.out.println("7. feladat"); // kivalogatom az egyedi neveket ArrayList<String> nevek = new ArrayList<>(); for( Hianyzo hianyzo : hianyzasok) { if( !nevek.contains(hianyzo.getNev()) ) { nevek.add(hianyzo.getNev()); } } // nevenkent osszeszamolom a hianyzasokat int[] diakHianyzas = new int[nevek.size()]; for( Hianyzo hianyzo : hianyzasok) { for( int i = 0; i < hianyzo.getHianyzas().length(); i++ ) { if( hianyzo.getHianyzas().charAt(i) == 'X' || hianyzo.getHianyzas().charAt(i) == 'I' ) { // a nevek listajaban a nev helye alapjan novelem // a hianyzasok darabszamat tartalmazo tomb // azonos helyen levo elemet diakHianyzas[nevek.indexOf(hianyzo.getNev())]++; } } } int max = 0; for( int i : diakHianyzas) { if( i > max ) { max = i; } } System.out.print("A legtobbet hianyzo tanulok: "); for( int i = 0; i < diakHianyzas.length; i++ ) { if( diakHianyzas[i] == max ) { System.out.print(nevek.get(i) + " "); } } System.out.println(); } // 4. feladat public static String hetnapja(int honap, int nap) { String[] napev = {"vasarnap","hetfo","kedd","szerda" ,"csutortok","pentek","szombat"}; int[] napszam = {0,31,59,90,120,151,181,212,243,273,304,335}; int napsorszam = (napszam[honap-1] + nap) % 7; return napev[napsorszam]; } }
Ha hibát találsz benne, kérlek jelezd!