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!
