Metódusban százalékszámítás? (Java feladat)
Készítsen Személy osztályt a következő adattagokkal: név, születési év, város. /KÉSZ/
Készítsen metódust, ami feltölt egy tömblistát személyekkel, a megadott számban. /KÉSZ/
Név: Szemely_1… Szemely_5-ig.
Születési év: 1995 – 2016-ig véletlen egészszám;
Város véletlen érték alapján (Budapest, Debrecen, Szeged)
Készítsen metódust, ami táblázatos formában listázza a személyeket. (KÉSZ)
-------------------------------------------------------
Készítsen metódust, ami kiírja, hogy az összes személy közül hány százalék lakik az egyes városokban. /?/
Az utolsót hogyan lehetne megcsinálni?
"Készítsen metódust, ami feltölt egy tömblistát személyekkel, a megadott számban. /KÉSZ/"
Van egy listád, amiben a személyek vannak.
Neked egy olyan olyan metódus kell, aminek ezt a listát tudod átadni, és nem ad vissza semmit csak kiírja az eredményt.
A metódusban mondjuk felveszel egy int[3] counter változót.
Végigiterálsz a listán.
Az adott elemből kiolvasod a várost, megnézed, hogy ha a város budapest, akkor a counter[0]-t növeled 1-el, ha debrecen, akkor counter[1]-et stb.
Amikor kész az iteráció, akkor kiírod, hogy
Budapesten lakók aránya counter[0]/lista.size()
stb.
Ez egy egyszerű megoldás, ha általánosabban szeretnéd megoldani, nem akarsz arra építeni, hogy 3 város van, akkor mondjuk egy Map<String, Integer> counter változót használsz.
Ugyanúgy iterálsz a listán, kiolvasod a várost. Ha a város még nincs a map-ben, akkor beeszed 1-es értékkel.
Ha már benne van, akkor az értéket növeled 1-el.
A végén meg úgy írod ki, hogy végigiterálsz a map-en, és kiírod a városokat meg a hozzá tartozó value/lista.size()-t.
Én így csinálnám.
Sajnos a válaszodból nem értettem sokat, mert gyakorlaton még csak nem is vettünk olyanokat, amit leírtál. Így néz ki eddig:
public static void main(String[] args) {
ArrayList<Szemely> szemely = new ArrayList <>();
feltolt (szemely, 6);
kiir (szemely);
}
private static void feltolt(ArrayList<Szemely> szemely, int n) {
Random rnd = new Random ();
String [] var = {"Budapest", "Debrecen", "Szeged"};
for (int i = 1; i < n; i++) {
Szemely h = new Szemely();
h.nev = "Szemely_"+i;
h.szuletesiev = rnd.nextInt(2016-1995+1)+1995;
int k = rnd.nextInt(3);
h.varos = var[k];
szemely.add(h);
}
}
private static void kiir(ArrayList<Szemely> szemely) {
for (Szemely s : szemely) {
System.out.println(s);
}
}
Ahogy az előző válaszoló mondta.
Ez is működik tetszőleges számú városra, csak a két hármast kell változóra cserélni.
private static void kiir(ArrayList<Szemely> szemely) {
...int[3] cnt;
...for (Szemely s : szemely) cnt[s.varos]++;
...for(int i=0; i<3; i++)
......System.out.println(cnt[i]*100/szemely.length());
}
Azért írtam le először, hogy a counter legyen int[3] típusú, mert map-et nem biztos, hogy ismered már.
Konkrétan valami ilyesmi:
private static void kiir(ArrayList<Szemely> szemely) {
int[] counter = new int[3];
for (Szemely s : szemely) {
String city = s.getVaros();
if city.equals("Budapest"){
counter[0]++;
}
if city.equals("Debrecen"){
counter[1]++;
}
if city.equals("Szeged"){
counter[2]++;
}
}
//counter feltöltve, mar csak ki kell irni
cntAll=szemely.size();
System.out.println("Budapesten lakók aránya "+1.0*counter[0]/cntAll+" %")
System.out.println("Debrecenben lakók aránya "+1.0*counter[1]/cntAll+" %")
System.out.println("Szegedenlakók aránya "+1.0*counter[2]/cntAll+" %")
}
Köszi a válaszokat, de a fenti megoldások nem tetszettek a Netbeansnek. :D Végül így sikerült és már hibátlan:
private static void szazalek(ArrayList<Szemely> szemely) {
int db1 = 0;
int db2 = 0;
int db3 = 0;
for (Szemely s : szemely) {
if (s.varos.equals("Budapest")){
db1++;
}
if (s.varos.equals("Debrecen")){
db2++;
}
if (s.varos.equals("Szeged")){
db3++;
}
}
System.out.println(+db1 * 100 / 5 + " % lakik Budapesten");
System.out.println(+db2 * 100 / 5 + " % lakik Debrecenben");
System.out.println(+db3 * 100 / 5 + " % lakik Szegeden");
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!