乱数を生成して画面に表示するプログラムを作成しました。ユーザはスコアポイントに2つ以上の数字の合計を入力しなければならない。以下に示すコードではすべて明らかになっています。私の問題は、ゲームを開始するボタンがプレスであるとき、私のアプリがクラッシュする/前にこの問題はなかったが、プログラムが完全に完了していないので、それをさらに開発しなければならないということだ。今回の開発では、アプリケーションがクラッシュするという問題が発生しました。私はこれがloadG2aとloadG2bのランダムなint変数と関係があり、おそらくそれらが(numbers.getText())としてparseIntに統合されているか、またはそれらを一緒に 'numbers' TextViewで一緒に設定していると考えています。これはまったくそうではないかもしれません。どちらの方法でも、私はこのソリューションを解決しようとしましたが、解決策を見つけることができませんでした。コードは次のとおりです。このプログラムで私のアプリがクラッシュする原因は何ですか? - Androidスタジオ
final Button loseStarter2;
loseStarter2 = (Button) findViewById(R.id.Starter2);
loseStarter2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loseStarter2.setVisibility(View.GONE);
infoG2.setVisibility(View.GONE);
final Random generateG2 = new Random();
final int loadG2a = generateG2.nextInt(89)+10;
final int loadG2b = generateG2.nextInt(89)+10;
final int loadG2c = 0;
final int loadG2d = 0;
final TextView numbers = (TextView) findViewById(R.id.numbers);
numbers.setText(loadG2a+loadG2b);
final EditText input2 = (EditText) findViewById(R.id.input2);
if (true) {
input2.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_ENTER:
Editable answer2 = input2.getText();
int finalAnswer2 = Integer.parseInt(String.valueOf(answer2));
int finalLoadG2 = Integer.parseInt(String.valueOf(numbers.getText()));
input2.getText().clear();
if (finalAnswer2 == finalLoadG2) {
score++;
}
if (score>=0 && score<=3){
int loadG2a = generateG2.nextInt(89)+10;
int loadG2b = generateG2.nextInt(89)+10;
int loadG2c = 0;
int loadG2d = 0;
numbers.setText(loadG2a+loadG2b);
}
if (score>=4 && score<=6){
int loadG2a = generateG2.nextInt(899)+100;
int loadG2b = generateG2.nextInt(899)+100;
int loadG2c = 0;
int loadG2d = 0;
numbers.setText(loadG2a+loadG2b);
}
if (score>=7 && score<=9){
int loadG2a = generateG2.nextInt(89)+10;
int loadG2b = generateG2.nextInt(89)+10;
int loadG2c = generateG2.nextInt(89)+10;
int loadG2d = 0;
numbers.setText(loadG2a+loadG2b+loadG2c);
}
if (score>=10 && score<=12){
int loadG2a = generateG2.nextInt(899)+100;
int loadG2b = generateG2.nextInt(899)+100;
int loadG2c = generateG2.nextInt(899)+100;
int loadG2d = 0;
numbers.setText(loadG2a+loadG2b+loadG2c);
}
if (score>=13 && score<=15){
int loadG2a = generateG2.nextInt(89)+10;
int loadG2b = generateG2.nextInt(89)+10;
int loadG2c = generateG2.nextInt(89)+10;
int loadG2d = generateG2.nextInt(89)+10;
numbers.setText(loadG2a+loadG2b+loadG2c+loadG2d);
}
if (score>=16 && score<=18){
int loadG2a = generateG2.nextInt(899)+100;
int loadG2b = generateG2.nextInt(899)+100;
int loadG2c = generateG2.nextInt(899)+100;
int loadG2d = generateG2.nextInt(899)+100;
numbers.setText(loadG2a+loadG2b+loadG2c+loadG2d);
}
if (score>=19 && score<=20){
int loadG2a = generateG2.nextInt(8999)+1000;
int loadG2b = generateG2.nextInt(8999)+1000;
int loadG2c = generateG2.nextInt(8999)+1000;
int loadG2d = 0;
numbers.setText(loadG2a+loadG2b+loadG2c);
}
if (score>=21 && score<=22){
int loadG2a = generateG2.nextInt(8999)+1000;
int loadG2b = generateG2.nextInt(8999)+1000;
int loadG2c = generateG2.nextInt(8999)+1000;
int loadG2d = generateG2.nextInt(8999)+1000;
numbers.setText(loadG2a+loadG2b+loadG2c+loadG2d);
}
if (score>=23){
int loadG2a = generateG2.nextInt(89999)+10000;
int loadG2b = generateG2.nextInt(89999)+10000;
int loadG2c = generateG2.nextInt(89999)+10000;
int loadG2d = generateG2.nextInt(89999)+10000;
numbers.setText(loadG2a+loadG2b+loadG2c+loadG2d);
}
}
}
return false;
}
});
}
私はこの問題を解決し、意図した方法でプログラムを実行していただけると幸いです。お気軽に必要なコードを置き換えてください。事前に多くの感謝。
クラッシュの場合は、logcatをアップロードしてください。問題をより早く検出するのに役立ちます。 –
コンソールで何が例外になるのか教えていただけますか? – xFighter
また、** int loadG2a **の重複した識別子があるようです。** – xFighter