Kezdőoldal » Számítástechnika » Programozás » Metódusban százalékszámítás?...

Metódusban százalékszámítás? (Java feladat)

Figyelt kérdés

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?



2019. máj. 17. 14:29
 1/5 anonim ***** válasza:

"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.

2019. máj. 17. 15:01
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

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);

}

}

2019. máj. 17. 15:06
 3/5 anonim ***** válasza:

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());

}

2019. máj. 17. 15:39
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

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+" %")


}

2019. máj. 17. 15:41
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:

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");

}

2019. máj. 17. 16:06

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!