ランダムな値が4つのランダムなボタンに適用されるプログラムがあります。 4つのボタンの上にランダム値idの1つが表示されます。ユーザーが表示された番号(loadG4)を含むボタンをタップすると、ポイントが得られます。私がこれを持っている問題は、ユーザーが正しいボタンをクリックして新しい数字が生成されると、rbvalueボタンがすべてloadG4値と異なるわけではないことです。私のコードに見られるように、それらは決して等しくあってはなりません。ここでは、コードがあります:ランダムボタンゲームは、最初のクリック後に瑕疵があるのはなぜですか?
int score = 0;
Random random = new Random();
int rbselector = random.nextInt(4); //These four initiations are out onCreate.
int loadG4 = random.nextInt(10);
final Button[] selectrb = new Button[4];
selectrb[0] = rb1;
selectrb[1] = rb2;
selectrb[2] = rb3;
selectrb[3] = rb4;
final Button loseStarter4 = (Button) findViewById(R.id.Starter4);
loseStarter4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
infoG4.setVisibility(View.GONE);
loseStarter4.setVisibility(View.GONE);
rb1.setVisibility(View.VISIBLE);
rb2.setVisibility(View.VISIBLE);
rb3.setVisibility(View.VISIBLE);
rb4.setVisibility(View.VISIBLE);
rbselector = random.nextInt(4);
final TextView number = (TextView) findViewById(R.id.number);
number.setText(""+ loadG4);
for(int allrbA=0; allrbA<4; allrbA++) {
int rbvalue = random.nextInt(9);
if (rbvalue == loadG4) {
rbvalue=9;
}
selectrb[allrbA].setText(""+rbvalue);
}
selectrb[rbselector].setText(""+ loadG4);
for (int allrbA = 0; allrbA < 4; allrbA++) {
selectrb[allrbA].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button clicked = (Button) v;
String clickVal = (String) clicked.getText();
int finalClick = Integer.valueOf(clickVal);
if (finalClick == loadG4) {
score++;
for (int allrbA = 0; allrbA < 4; allrbA++) {
int rbvalue = random.nextInt(9);
if (rbvalue == loadG4) {
rbvalue=9;
}
selectrb[allrbA].setText("" + rbvalue);
}
int loadG4 = random.nextInt(10);
number.setText("" + loadG4);
int rbselector = random.nextInt(4);
selectrb[rbselector].setText("" + loadG4);
}
}
});
}
rbvalueがloadG4に等しい場合、それはいくつかの理由= 9に設定されているように、最初に正しいが、それをクリックした後、私は、それを持っていることはrbvalueが等しくなる可能性があります負荷G4。
また、loadG4の値もここでは決して変更されません。どうしてこれなの?
これを見て、なぜa)rbvalueが最初の正しいクリックの後にG4をロードするのか、b)loadG4が同じ番号のままであるのかを説明できる人には感謝します。
事前に感謝します。
これは、同じ値の問題が解決されましたが、loadG4では同じ値が解決されましたが、rbvalueとloadG4の間で同じ値が引き続き発生します。しかし、loadG4とrbselector変数を再初期化しても問題は解決しないのですか?どうしてこれが効くのか分かりません。 – H3ll0
rbvalueとloadG4の間で同じ値がどういう意味ですか?毎回同じボタンの値を取得していますか?または少なくとも数回後に?もしそうなら、nextIntの値をもっと大きくする。より多くの乱数が生成されます。あなたの問題をはっきりと説明してください。 –
コードを再初期化しないというあなたの提案はなぜ機能しましたか? – H3ll0