A feladat leírását, melynek a megoldását közzéteszem innen töltheted le. Ez a megoldás listával dolgozik. Az adattároló osztályban már belül sok feladatot előkészítek, és a végső megoldásban csak ezeket használom.
A tároló osztályban statikus metódusokat is használok, mely az 1. és 2. feladat megoldását nagyban megkönnyíti. A konstruktorban lévő if-else szerkezeteket tömörítettem, vagy metódussal kiváltottam.
Adattároló osztály:
/** * * @author https://webotlet.hu */ package webotlet_06feb_szamla_java_v2; public class Hivas { private int kOra; private int kPerc; private int kMperc; private int vOra; private int vPerc; private int vMperc; private String szam; private boolean mobil; private boolean csucs; private int hosszPercek; private double koltseg; public Hivas( String[] tomb, String szam ) { kOra = Integer.parseInt(tomb[0]); kPerc = Integer.parseInt(tomb[1]); kMperc = Integer.parseInt(tomb[2]); vOra = Integer.parseInt(tomb[3]); vPerc = Integer.parseInt(tomb[4]); vMperc = Integer.parseInt(tomb[5]); this.szam = szam; // mobilhivas vagy nem mobil = mobilHivas(szam); // csucsideju vagy nem csucs = kOra >= 7 && kOra < 18; // a hivas hossza percekben hosszPercek = hivashossz( kOra, kPerc, kMperc, vOra, vPerc, vMperc ); // hivaskoltsegek kiszamitasa if( csucs && mobil ) { koltseg = 69.175 * hosszPercek; } else if( csucs && !mobil ) { koltseg = 30 * hosszPercek; } // ez a ketto felesleges a feladat szempontjabol, // de inkabb ne maradjon ekkor sem ures a koltseg else if( !csucs && mobil ) { koltseg = 46.675 * hosszPercek; } else { koltseg = 15 * hosszPercek; } } public String getSzam() { return szam; } public boolean isMobil() { return mobil; } public boolean isCsucs() { return csucs; } public int getHosszPercek() { return hosszPercek; } public double getKoltseg() { return koltseg; } @Override public String toString() { return "Hivas{" + "kOra=" + kOra + ", kPerc=" + kPerc + ", kMperc=" + kMperc + ", vOra=" + vOra + ", vPerc=" + vPerc + ", vMperc=" + vMperc + ", szam=" + szam + ", mobil=" + mobil + ", csucs=" + csucs + ", hossz=" + hosszPercek + ", koltseg=" + koltseg + '}'; } public static boolean mobilHivas( String szam ) { return szam.startsWith( "39" ) || szam.startsWith( "41" ) || szam.startsWith( "71" ); } public static int hivashossz( int kOra, int kPerc, int kMperc, int vOra, int vPerc, int vMperc ) { int hosszMp = (vOra * 3600 + vPerc * 60 + vMperc) - (kOra * 3600 + kPerc * 60 + kMperc); int percek = hosszMp / 60; if( hosszMp % 60 != 0 ) { percek++; } return percek; } }
A feladat megoldásai:
/** * * @author https://webotlet.hu */ package webotlet_06feb_szamla_java_v2; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.Scanner; public class Webotlet_06feb_szamla_java_v2 { public static void main( String[] args ) { ArrayList<Hivas> hivasok = new ArrayList<>(); // 1. feladat System.out.println( "1. feladat" ); Scanner sc = new Scanner(System.in); System.out.print( "Adj meg egy telefonszamot: " ); String szam = sc.nextLine(); if( Hivas.mobilHivas( szam ) ) { System.out.println( "A telefonszam mobil." ); } else { System.out.println( "A telefonszam NEM mobil." ); } // 2. feladat System.out.println( "2. feladat" ); System.out.print( "Add meg egy hivas kezdesi es befejezesi "+ "idopontjat\n(pl: 6 15 0 6 19 0): " ); String[] idok = sc.nextLine().split(" "); int hossz = Hivas.hivashossz( Integer.parseInt(idok[0]), Integer.parseInt(idok[1]), Integer.parseInt(idok[2]), Integer.parseInt(idok[3]), Integer.parseInt(idok[4]), Integer.parseInt(idok[5]) ); System.out.println( "A hivas hossza percben: "+hossz ); try { // 3. feladat int db; String sor; RandomAccessFile raf = new RandomAccessFile("hivasok.txt","r"); for( sor = raf.readLine(); sor != null; sor = raf.readLine() ) { hivasok.add(new Hivas( sor.split(" "), raf.readLine() )); } raf.close(); RandomAccessFile ki = new RandomAccessFile("percek.txt","rw"); ki.setLength(0); for( Hivas h : hivasok ) { ki.writeBytes( h.getHosszPercek()+" "+h.getSzam()+"\n" ); } ki.close(); } catch( IOException e ) { System.err.println( "HIBA" ); } // 4. feladat System.out.println( "4. feladat" ); int csucsdb = 0; for( Hivas h : hivasok) { if( h.isCsucs() ) { csucsdb++; } } System.out.println( "Csucsidobeli hivas: "+csucsdb+" db" ); System.out.println( "Csucsidon kivuli hivas: "+(hivasok.size()-csucsdb)+" db" ); // 5. feladat System.out.println( "5. feladat" ); int vezperc = 0; int mobilperc = 0; for( Hivas h : hivasok) { if( h.isMobil() ) { mobilperc += h.getHosszPercek(); } else { vezperc += h.getHosszPercek(); } } System.out.println( "Mobil percek: "+mobilperc+" perc" ); System.out.println( "Vezetekes percek: "+vezperc+" perc" ); // 6. feladat System.out.println( "6. feladat" ); double cskoltseg = 0; for( Hivas h : hivasok) { if( h.isCsucs() ) { cskoltseg += h.getKoltseg(); } } System.out.println( "A csucsidos hivasok koltsege: "+cskoltseg ); } }
Ha hibát találsz benne, kérlek jelezd!