Random szám generálás mindig ugyan az, miért?
két alapműveletet szeretnék generáltatni de mindig ugyan az lesz, az első szorzás a második pedig kivonás nem tudja vki hogy miért?
public class MainActivity extends Activity {
TextView feladat;
int muveletSzam;
Random r = new Random();
char muvelet;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
feladat = (TextView) findViewById(R.id.feladat);
feladat.setText(""+randNum()+alapMuveletEgy()+randNum()+alapMuveletKetto()+randNum()+"= ???");
}
private int randNum() {
return r.nextInt(10-1)+1;
}
private char alapMuveletEgy(){
muveletSzam=r.nextInt(3-1)+1;
switch(muveletSzam){
case 1:muvelet='+';
case 2:muvelet='-';
case 3:muvelet='*';
}
return muvelet;
}
private char alapMuveletKetto(){
muveletSzam=r.nextInt(3-1)+1;
switch(muveletSzam){
case 1:muvelet='*';
case 2:muvelet='+';
case 3:muvelet='-';
}
return muvelet;
}
}
A randomot külön-külön hozd létre a két metódusban, úgy menni fog.
Én is kezdő vok még, de szerintem azért, mert ugye két külön metódusban hívod meg r.NextInt-et ugyanazokkal a paraméterekkel, és ez ugyanaz az eleme a randomnak.
Itt van a hiba:
r.nextInt(3-1)+1;
"Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence."
0 és 2 között kérsz véletlen egészet, amiben a 2 nincs benne. 0-hoz vagy 1-hez 1-et hozzáadva 1-et vagy 2-őt kapsz hiányzik a 3. Használhatnál enum-ot a műveleteknek, és akkor a values listából veszel ki egy elemet 0 és műveletek számáig ( values().size() ). A switch sokkal olvashatóbb lenne.
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!