#java #android #android-studio
#java #Android #android-studio
Вопрос:
Я написал программу, в которой генерируются случайные числа и отображаются на экране, при этом показано, что они суммируются. Затем пользователь должен ввести сумму двух или более чисел, чтобы набрать балл. Все это ясно показано в коде, показанном ниже. Моя проблема в том, что при нажатии кнопки запуска игры происходит сбой моего приложения / Раньше у меня не было этой проблемы, хотя программа тогда не была полностью завершена, поэтому мне пришлось развивать ее дальше. В этой разработке я столкнулся с проблемой сбоя моего приложения. Я полагаю, что это как-то связано со случайными переменными loadG2a и loadG2b типа int и, возможно, либо с их интеграцией в parseInt как (numbers.getText()), либо с установкой их вместе в текстовом представлении «numbers» в первую очередь. Возможно, это вообще не так. В любом случае, я пытался решить это решение, но не смог найти исправление. Вот код:
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 amp;amp; 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 amp;amp; 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 amp;amp; 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 amp;amp; 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 amp;amp; 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 amp;amp; 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 amp;amp; 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 amp;amp; 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;
}
});
}
Я был бы признателен всем, кто готов помочь мне решить эту проблему и запустить программу так, как задумано. Пожалуйста, не стесняйтесь заменять любой необходимый код. Заранее большое спасибо.
Комментарии:
1. В случае сбоев, пожалуйста, загрузите logcat, это помогает быстрее обнаружить проблему.
2. можете ли вы сказать нам, какое исключение вы получаете в консоли?
3. более того, похоже, что у вас есть дублирующий идентификатор для int loadG2a
Ответ №1:
// here is int's (all other lines with int's must be also corrected)
numbers.setText(loadG2a loadG2b loadG2c loadG2d);
// but must be String =)
numbers.setText(loadG2a loadG2b loadG2c loadG2d "");
Комментарии:
1. Спасибо, забыл об этом.