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, használok benne HashSet-et, foreach ciklust (ahol lehet), és OO szemléletből kicsit több található benne.
Adattároló osztály:
/** * * @author https://webotlet.hu */ package webotlet_13maj_valasztasok_v2; public class Jelolt { private int kerulet; private int szavazatok; private String nev; private String part; public Jelolt( String[] tomb ) { kerulet = Integer.parseInt(tomb[0]); szavazatok = Integer.parseInt(tomb[1]); nev = tomb[2] + " " + tomb[3]; part = tomb[4]; if( part.equals("-")) { part = "fuggetlen"; } } public int getKerulet() { return kerulet; } public int getSzavazatok() { return szavazatok; } public String getNev() { return nev; } public String getPart() { return part; } @Override public String toString() { return "Jelolt{" + "kerulet=" + kerulet + ", szavazatok=" + szavazatok + ", nev=" + nev + ", part=" + part + '}'; } }
Párt osztály (egy konkrét feladathoz):
/** * * @author https://webotlet.hu */ package webotlet_13maj_valasztasok_v2; import java.util.ArrayList; public class Part { private String nev; private String rovid; private ArrayList<Jelolt> jeloltek; private int osszSzavazat; public Part( String nev, String rovid ) { this.nev = nev; this.rovid = rovid; jeloltek = new ArrayList<>(); osszSzavazat = 0; } public String getNev() { return nev; } public String getRovid() { return rovid; } public ArrayList<Jelolt> getJeloltek() { return jeloltek; } public int getOsszSzavazat() { return osszSzavazat; } @Override public String toString() { return "Part{" + "nev=" + nev + ", rovid=" + rovid + ", jeloltek=" + jeloltek + '}'; } public void addJelolt(Jelolt jelolt) { jeloltek.add(jelolt); osszSzavazat += jelolt.getSzavazatok(); } }
A feladat megoldásai:
/** * * @author https://webotlet.hu */ package webotlet_13maj_valasztasok_v2; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; public class webotlet_13maj_valasztasok_v2 { public static void main(String[] args) { System.out.println("1. feladat"); ArrayList<Jelolt> jeloltek = new ArrayList<>(); try { RandomAccessFile raf = new RandomAccessFile("szavazatok.txt","r"); String sor; for( sor = raf.readLine(); sor != null; sor = raf.readLine() ) { jeloltek.add(new Jelolt(sor.split(" "))); } raf.close(); } catch( IOException e ) { System.out.println("HIBA"); } // for( int i = 0; i < jeloltek.length; i++ ) // { // System.out.println(jeloltek[i].toString()); // } System.out.println("2. feladat"); System.out.println("A helyhatosagi valasztason " + jeloltek.size() + " kepviselojelolt indult."); System.out.println("3. feladat"); Scanner sc = new Scanner(System.in); System.out.println("Adja meg egy jelolt nevet:"); String nev = sc.nextLine(); boolean vanNev = false; for( Jelolt jelolt : jeloltek ) { if( jelolt.getNev().equals(nev)) { System.out.println("A jelolt " + jelolt.getSzavazatok() + " szavazatot kapott."); vanNev = true; break; } } if( !vanNev ) { System.out.println("Ilyen nevu kepviselojelolt " + "nem szerepel a nyilvantartasban!"); } System.out.println("4. feladat"); int osszSzavazat = 0; for( Jelolt jelolt : jeloltek) { osszSzavazat += jelolt.getSzavazatok(); } double szazalek = (osszSzavazat / (double)12345) * 100; System.out.println(String.format("A valasztason %d " + "allampolgar, a jogosultak %.2f%%-a vett reszt.", osszSzavazat, szazalek)); System.out.println("5. feladat"); // GYEP, HEP, TISZ, ZEP, fuggetlen HashMap<String, Part> partok = new HashMap<>(); partok.put( "GYEP", new Part("Gyumolcsevok Partja","GYEP")); partok.put( "HEP", new Part("Husevok Partja","HEP")); partok.put( "TISZ", new Part("Tejivok Partja","TISZ")); partok.put( "ZEP", new Part("Zoldsegevok Partja","ZEP")); partok.put( "fuggetlen", new Part("Fuggetlen jeloltek","fuggetlen")); for( Jelolt jelolt : jeloltek) { partok.get(jelolt.getPart()).addJelolt(jelolt); } for( Part part : partok.values()) { szazalek = (part.getOsszSzavazat() / (double)osszSzavazat) * 100; System.out.println(String.format("%s= %.2f%%", part.getNev(), szazalek)); } System.out.println("6. feladat"); int maxSzavazat = jeloltek.get(0).getSzavazatok(); for( Jelolt jelolt : jeloltek) { if( jelolt.getSzavazatok() > maxSzavazat ) { maxSzavazat = jelolt.getSzavazatok(); } } for( Jelolt jelolt : jeloltek) { if( jelolt.getSzavazatok() == maxSzavazat ) { System.out.println( jelolt.getNev() + " " + jelolt.getPart()); } } // 7. feladat Jelolt[] nyertesek = new Jelolt[9]; for( Jelolt jelolt : jeloltek) { if( nyertesek[ jelolt.getKerulet() ] == null || nyertesek[ jelolt.getKerulet() ].getSzavazatok() < jelolt.getSzavazatok() ) { nyertesek[ jelolt.getKerulet() ] = jelolt; } } try { RandomAccessFile out = new RandomAccessFile("kepviselok.txt", "rw"); // ha esetleg többször hoznánk létre a fájlt, // töröljük az előző tartalmát out.setLength(0); for( int i = 1; i < nyertesek.length; i++ ) { out.writeBytes(i + " " + nyertesek[i].getNev() + " " + nyertesek[i].getPart() + "\n"); } out.close(); } catch( IOException e ) { System.out.println("HIBA"); } } }
Ha hibát találsz benne, kérlek jelezd!