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.
Adattároló osztály:
/** * * @author https://webotlet.hu */ package webotlet_19maj_ceges_autok; public class AutoAdat { private int nap; private String ido; private String rendszam; private int dolgozo; private int km; private boolean be; private int sorszam; public AutoAdat(String[] tomb) { nap = Integer.parseInt(tomb[0]); ido = tomb[1]; rendszam = tomb[2]; dolgozo = Integer.parseInt(tomb[3]); km = Integer.parseInt(tomb[4]); be = tomb[5].equals("1"); sorszam = Character.getNumericValue(rendszam.charAt(5)); } public int getNap() { return nap; } public String getIdo() { return ido; } public String getRendszam() { return rendszam; } public int getDolgozo() { return dolgozo; } public int getKm() { return km; } public boolean isBe() { return be; } public int getSorszam() { return sorszam; } @Override public String toString() { return "AutoAdat{" + "nap=" + nap + ", ido=" + ido + ", rendszam=" + rendszam + ", dolgozo=" + dolgozo + ", km=" + km + ", be=" + be + ", sorszam=" + sorszam + '}'; } }
A feladat megoldásai:
/** * * @author https://webotlet.hu */ package webotlet_19maj_ceges_autok; import java.io.IOException; import java.io.RandomAccessFile; import java.util.Scanner; public class Webotlet_19maj_ceges_autok { public static void main(String[] args) { // 1. feladat RandomAccessFile raf; String sor; AutoAdat[] adatok = null; try { raf = new RandomAccessFile("autok.txt", "r"); int db = 0; for( sor = raf.readLine(); sor != null; sor = raf.readLine() ) { db++; } adatok = new AutoAdat[db]; raf.seek(0); int hely = 0; for( sor = raf.readLine(); sor != null; sor = raf.readLine() ) { adatok[hely] = new AutoAdat(sor.split(" ")); hely++; } raf.close(); } catch( IOException e ) { System.out.println("HIBA"); } // for( AutoAdat adat : adatok ) // { // System.out.println(adat); // } // 2. feladat System.out.println("2. feladat"); for( int i = adatok.length - 1; i > -1; i-- ) { if( !adatok[i].isBe() ) { System.out.println(adatok[i].getNap() + ". nap rendszam: " + adatok[i].getRendszam()); break; } } // 3. feladat System.out.println("3. feladat"); Scanner sc = new Scanner(System.in); System.out.print("Nap: "); int nap = sc.nextInt(); System.out.println("Forgalom a(z) " + nap + ". napon:"); for( int i = 0; i < adatok.length; i++ ) { if( adatok[i].getNap() == nap ) { System.out.print(adatok[i].getIdo() + " " + adatok[i].getRendszam() + " " + adatok[i].getDolgozo() + " "); if( adatok[i].isBe() ) { System.out.println("be"); } else { System.out.println("ki"); } } } // 4. feladat System.out.println("4. feladat"); int[] napok = new int[10]; for( int i = 0; i < adatok.length; i++ ) { if( adatok[i].isBe() ) { napok[adatok[i].getSorszam()]--; } else { napok[adatok[i].getSorszam()]++; } } int osszeg = 0; for( int i = 0; i < napok.length; i++ ) { osszeg += napok[i]; } System.out.println("A honap vegen " + osszeg + " autot nem hoztak vissza."); // 5. feladat System.out.println("5. feladat"); for( int i = 0; i < adatok.length - 1; i++ ) { for( int j = i + 1; j < adatok.length; j++ ) { // 3 szempont szerint rendezek // rendszam szerint // azon belul nap szerint // azon belul ido szerint if( adatok[i].getRendszam().compareTo(adatok[j].getRendszam()) > 0 || (adatok[i].getRendszam().compareTo(adatok[j].getRendszam()) == 0 && adatok[i].getNap() > adatok[j].getNap()) || (adatok[i].getRendszam().compareTo(adatok[j].getRendszam()) == 0 && adatok[i].getNap() == adatok[j].getNap() && adatok[i].getIdo().compareTo(adatok[j].getIdo()) > 0) ) { AutoAdat csere = adatok[i]; adatok[i] = adatok[j]; adatok[j] = csere; } } } int[] kmosszeg = new int[10]; for( int i = 1; i < adatok.length; i++ ) { if( adatok[i].getSorszam() == adatok[i - 1].getSorszam() ) { kmosszeg[adatok[i].getSorszam()] += adatok[i].getKm() - adatok[i - 1].getKm(); } } for( int i = 0; i < kmosszeg.length; i++ ) { System.out.println("CEG30" + i + " " + kmosszeg[i] + " km"); } // 6. feladat System.out.println("6. feladat"); int maxhely = 0; int max = 0; for( int i = 1; i < adatok.length; i++ ) { if( adatok[i].getSorszam() == adatok[i - 1].getSorszam() ) { if( adatok[i].getKm() - adatok[i - 1].getKm() > max ) { max = adatok[i].getKm() - adatok[i - 1].getKm(); maxhely = i; } } } System.out.println("Leghosszabb ut: " + max + " km, szemely: " + adatok[maxhely].getDolgozo()); // 7. feladat System.out.println("7. feladat"); sc = new Scanner(System.in); System.out.print("Rendszam: "); String rendszam = sc.nextLine(); RandomAccessFile ki; try { ki = new RandomAccessFile(rendszam + "_menetlevel.txt", "rw"); ki.setLength(0); for( int i = 0; i < adatok.length; i++ ) { if( adatok[i].getRendszam().equals(rendszam) ) { if( !adatok[i].isBe() ) { ki.writeBytes(adatok[i].getDolgozo() + "\t" + adatok[i].getNap() + ". " + adatok[i].getIdo() + "\t" + adatok[i].getKm() + " km"); } else { ki.writeBytes("\t" + adatok[i].getNap() + ". " + adatok[i].getIdo() + "\t" + adatok[i].getKm() + " km\n"); } } } System.out.println("Menetlevel kesz."); ki.close(); } catch( IOException e ) { System.out.println("HIBA"); } } }
Ha hibát találsz benne, kérlek jelezd!