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!
