A feladat leírását, melynek a megoldását közzéteszem innen töltheted le. Ezzel a feladattal viszont több bajom van, amiket az 1. verzió megoldásánál leírtam. Ez a megoldás listával dolgozik, sok helyen foreach ciklust használok, és egy helyen bemutatok egy switch utasítást működés közben.
Adattároló osztály:
/** * * @author https://webotlet.hu */ package webotlet_06okt_zenei_adok_java_v2; public class Zene { private int radio; private int perc; private int mperc; private String azonosito; private String eloado; private String cim; private int hosszMp; private int kezd; private int vege; public Zene( String[] tomb ) { radio = Integer.parseInt(tomb[0]); perc = Integer.parseInt(tomb[1]); mperc = Integer.parseInt(tomb[2]); azonosito = tomb[3]; String[] tmp = azonosito.split(":"); eloado = tmp[0]; cim = tmp[1]; hosszMp = perc * 60 + mperc; } public int getRadio() { return radio; } public int getPerc() { return perc; } public int getMperc() { return mperc; } public String getAzonosito() { return azonosito; } public String getEloado() { return eloado; } public String getCim() { return cim; } public int getHosszMp() { return hosszMp; } public int getKezd() { return kezd; } public int getVege() { return vege; } public void setKezd(int kezd) { this.kezd = kezd; this.vege = kezd + hosszMp; } @Override public String toString() { return "Zene{" + "radio=" + radio + ", perc=" + perc + ", mperc=" + mperc + ", azonosito=" + azonosito + ", eloado=" + eloado + ", cim=" + cim + ", hosszMp=" + hosszMp + ", kezd=" + kezd + ", vege=" + vege + '}'; } }
A feladat megoldása:
/** * * @author https://webotlet.hu */ package webotlet_06okt_zenei_adok_java_v2; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.Scanner; public class Webotlet_06okt_zenei_adok_java_v2 { public static void main(String[] args) { // 1. feladat ArrayList<Zene> zenek = new ArrayList<>(); try { RandomAccessFile raf = new RandomAccessFile("musor.txt", "r"); raf.readLine(); String sor; for( sor = raf.readLine(); sor != null; sor = raf.readLine() ) { zenek.add(new Zene(sor.split(" ", 4))); } raf.close(); } catch( IOException e ) { System.out.println("HIBA"); } // 2. feladat System.out.println("2. feladat"); int[] dbRadiok = new int[4]; for( Zene zene : zenek) { dbRadiok[zene.getRadio()]++; } for( int i = 1; i < dbRadiok.length; i++ ) { System.out.println(i + ". radio: " + dbRadiok[i]); } // 3. feladat System.out.println("3. feladat"); int elsoEric = 0; int utolsoEric = 0; for( int i = 0; i < zenek.size(); i++ ) { if( zenek.get(i).getRadio() == 1 && zenek.get(i).getEloado().equals("Eric Clapton")) { elsoEric = i; break; } } for( int i = zenek.size() - 1; i >= 0; i-- ) { if( zenek.get(i).getRadio() == 1 && zenek.get(i).getEloado().equals("Eric Clapton")) { utolsoEric = i; break; } } int ido = 0; for( int i = elsoEric; i <= utolsoEric; i++ ) { if( zenek.get(i).getRadio() == 1 ) { ido += zenek.get(i).getHosszMp(); } } System.out.println(idoFormaz(ido)); // 4. feladat System.out.println("4. feladat"); int radio1 = 0; int radio2 = 0; int radio3 = 0; for( Zene zene : zenek) { switch( zene.getRadio() ) { case 1: zene.setKezd(radio1); radio1 += zene.getHosszMp(); break; case 2: zene.setKezd(radio2); radio2 += zene.getHosszMp(); break; default: zene.setKezd(radio3); radio3 += zene.getHosszMp(); break; } } Zene omega = null; for( Zene zene : zenek) { if( zene.getAzonosito().equals("Omega:Legenda") ) { omega = zene; break; } } System.out.println("Az Omega:Legenda zene a " + omega.getRadio() + ". radion szolt."); for( Zene zene : zenek) { if( zene.getRadio() != omega.getRadio() ) { if( omega.getKezd() >= zene.getKezd() && omega.getKezd() <= zene.getVege() ) { System.out.println(zene.getRadio() + ": " + zene.getEloado() + "-" + zene.getCim()); } } } // 5. feladat System.out.println("5. feladat"); Scanner sc = new Scanner(System.in); System.out.println("Add meg a felismert karaktereket!"); String mintasor = sc.nextLine().toLowerCase(); char[] minta = mintasor.toCharArray(); try { RandomAccessFile ki =new RandomAccessFile("keres.txt", "rw"); ki.setLength(0); ki.writeBytes(mintasor + "\n"); for( Zene zene : zenek) { String dal = zene.getAzonosito().toLowerCase(); int talalt = 0; for( int j = 0; j < dal.length(); j++ ) { if( talalt < minta.length && dal.charAt(j) == minta[talalt]) { talalt++; } } if( talalt == minta.length ) { ki.writeBytes(zene.getAzonosito()+"\n"); } } } catch( IOException e ) { System.out.println("HIBA"); } // 6. feladat System.out.println("6. feladat"); int musorido = 0; for( Zene zene : zenek) { if( zene.getRadio() == 1 ) { if( 3600 - (musorido % 3600) < (60 + zene.getHosszMp()) ) { musorido += 3600 - (musorido % 3600); musorido += 180; } musorido += 60 + zene.getHosszMp(); } } System.out.println(idoFormaz(musorido)); } public static String idoFormaz(int hossz) { int ora; int perc; int mperc; ora = hossz / 3600; hossz = hossz % 3600; perc = hossz / 60; mperc = hossz % 60; return ora + ":" + perc + ":" + mperc; } }
Ha hibát találsz benne, kérlek jelezd!