JAVA - nem-primitiv bemeno parameteren vegzett muvelet egy funkcioban megvaltoztatja a mainben letrehozott nem-primitiv erteket ?
szeretnem megvaltoztatni egy String tomb erteket.
Moziszekek foglalasat szimulalni, B ill. S betuvel.
Ha meghivom ujbol a 2.es menusort ,hiaba valtoztattam a tombon, nem marad meg az erteke az elozo foglalasnak. Mit csinalok rosszul, hogy lehetne ezt a leheto legkevesebb valtoztatassal elerni?
KODOM jelenleg:
-----------------
itt probalom felulirni a seat[][] tombot:
public static String[][] firstStage2(int r,int s,int rNumber, int sNumber, String[][] seat){
System.out.println();
int seatNEVER = rNumber*sNumber;
int counter = 1;
System.out.println("Cinema:");
for (int i = 0 ; i <= s; i++) {
if(i == 0) {
System.out.print(" ");
}else{
System.out.print(i+" ");
}
}
System.out.println();
for (int lines = 1; lines <= r; lines++) {
System.out.print(lines+" ");
for(int seats = 1; seats <= s; seats++) {
counter++;
if(lines == rNumber && seats == sNumber){
seat[lines-1][seats-1] = "B ";
System.out.print("B"+" ");
}else{
seat[lines-1][seats-1] = "S ";
System.out.print("S"+" ");
}
}
System.out.println();
}
return seat;
}
es igy hivom meg a mainben:
seat = firstStage2(r,s,rNumber,sNumber, seat);
------------------
igy kene mukodnie, pl.:
Enter the number of rows:
> 7
Enter the number of seats in each row:
> 7
1. Show the seats
2. Buy a ticket
0. Exit
> 1
Cinema:
1 2 3 4 5 6 7
1 S S S S S S S
2 S S S S S S S
3 S S S S S S S
4 S S S S S S S
5 S S S S S S S
6 S S S S S S S
7 S S S S S S S
1. Show the seats
2. Buy a ticket
0. Exit
> 2
Enter a row number:
> 4
Enter a seat number in that row:
> 5
Ticket price: $10
1. Show the seats
2. Buy a ticket
0. Exit
> 1
Cinema:
1 2 3 4 5 6 7
1 S S S S S S S
2 S S S S S S S
3 S S S S S S S
4 S S S S B S S
5 S S S S S S S
6 S S S S S S S
7 S S S S S S S
1. Show the seats
2. Buy a ticket
0. Exit
> 2
Enter a row number:
> 6
Enter a seat number in that row:
> 6
Ticket price: $10
1. Show the seats
2. Buy a ticket
0. Exit
> 1
Cinema:
1 2 3 4 5 6 7
1 S S S S S S S
2 S S S S S S S
3 S S S S S S S
4 S S S S B S S
5 S S S S S S S
6 S S S S S B S
7 S S S S S S S
1. Show the seats
2. Buy a ticket
0. Exit
> 0
Annyi a problémád, hogy ha valaki az 1-es opciót választja, akkor meghívod a firstStage() függvényt, ami újrainicializálja a "székeket", azaz feltölti a seat tömböt az alapértékekkel (a 22. sortól kezdődően). Emiatt minden változtatás azonnal elveszik, amint meg szeretnéd nézni, hogy mi változott. Bónusz: a firstStage() nem a tömb adott elemének értékét teszi ki a képernyőre, hanem azt, hogy "S " (28. sor).
Tedd külön az inicializálást és a kiíratást, vagy írd át, hogy a 27. sor értékadása csak akkor fusson le, ha az adott elem null (tehát a tömb nincs inicializálva). Ez utóbbi a csúnyább megoldás. Emellett a kiíratást írd át úgy, hogy a tömb értékét írja ki, ne egy fix szöveget.
Egyébként a tömb objektumnak számít, így referencia alapján adódik át, emiatt a firstStage2() visszatérési értéke (ezzel együtt az értékadás a 201. sorban) felesleges.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!