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!
