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!