Java Android-错误消息
我最近在将我的android代码编译到模拟器上时出错。游戏是这样的,当你点击一个按钮时,它会给你一个显示在文本视图上的数学问题,用户输入他们的答案(数字),然后点击“检查”按钮。当我点击该按钮时,它总是返回false。 有人知道怎么解决这个问题吗 Java类Java Android-错误消息,java,android,string,android-studio,android-edittext,Java,Android,String,Android Studio,Android Edittext,我最近在将我的android代码编译到模拟器上时出错。游戏是这样的,当你点击一个按钮时,它会给你一个显示在文本视图上的数学问题,用户输入他们的答案(数字),然后点击“检查”按钮。当我点击该按钮时,它总是返回false。 有人知道怎么解决这个问题吗 Java类 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
mathQuestion = findViewById(R.id.magic_textview);
redCircle = findViewById(R.id.math_ball);
yellowbox = findViewById(R.id.yellow_box);
yellowboxY = 1550f - 130f;
yellowbox.setY(yellowboxY);
yellowboxX = 472f;
yellowbox.setX(yellowboxX);
type_answer = findViewById(R.id.type_answer);
Button checkButton = findViewById(R.id.check_button);
checkButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(redCircleX == yellowboxX && redCircleY == yellowboxY){
mathQuestion.setText("What is "+math_int1+" + "+math_int2+" ?");
math_int1 = r.nextInt(20);
math_int2 = r.nextInt(20)+1;
string_math_int1 = String.valueOf(math_int1);
string_math_int2 = String.valueOf(math_int2);
Button checkAnswer = findViewById(R.id.check_answer);
checkAnswer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Error? Always returning false?
if (type_answer.getText().toString().contains (Integer.toString( math_int1 + math_int2))) {
Toast t = Toast.makeText(GameActivity.this, "Success!", Toast.LENGTH_SHORT);
t.show();
} else {
Toast t2= Toast.makeText(GameActivity.this, type_answer.getText().toString(), Toast.LENGTH_SHORT);
t2.show();
}
}
});
}else{
Toast.makeText(GameActivity.this, "Incorrect Or Error", Toast.LENGTH_SHORT).show();
}
}
});
Button upButton = findViewById(R.id.up_button);
upButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
moveUp();
}
});
Button downButton = findViewById(R.id.down_button);
downButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
moveDown();
}
});
Button leftButton = findViewById(R.id.left_button);
leftButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
moveLeft();
}
});
Button rightButton = findViewById(R.id.right_button);
rightButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
moveRight();
}
});
Button resetCircleXY = findViewById(R.id.reset_button);
resetCircleXY.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
initCircleXY();
Toast.makeText(GameActivity.this, "Reset Ball's Position", Toast.LENGTH_SHORT).show();
}
});
upButton.performClick();
leftButton.performClick();
redCircleY = 1550f;
redCircle.setY(redCircleY);
redCircleX = 472f;
redCircle.setX(redCircleX);
}
private void moveUp(){
redCircleY -= ballMoveDis;
redCircle.setY(redCircleY);
}
private void moveDown(){
redCircleY += ballMoveDis;
redCircle.setY(redCircleY);
}
private void moveLeft(){
redCircleX += ballMoveDis;
redCircle.setX(redCircleX);
}
private void moveRight(){
redCircleX -= ballMoveDis;
redCircle.setX(redCircleX);
}
private void initCircleXY(){
redCircleY = 1550f;
redCircle.setY(redCircleY);
redCircleX = 472f;
redCircle.setX(redCircleX);
}
}
非常感谢您的帮助,谢谢您的第一个错误
string_math_int1 = String.valueOf(math_int1);
string_math_int2 = String.valueOf(math_int1); // this should be math_int2
但是考虑添加两个字符串
string_math_int1 + string_math_int2)
"10" + "20"
相等于
"1020" not "30"
也许吧
对新格式问题的答复:
当您想要检查两个字符串的int值时,您的问题与比较这两个字符串有关。您可以尝试在EditText
的条目上使用Integer.parseInt()
。请注意,如果您的EditText
包含任何非数字字符,您需要尝试使用它来捕获异常
关于编辑前崩溃的上一个问题的答案:
您的崩溃与您的EditText
无关。这是一条线:
Toast.makeText(GameActivity.this,math_int1+math_int2,Toast.LENGTH_SHORT).show()代码>
通过向其传递一个int值,它试图查找具有该id的字符串。如果您的目的是显示这些int的总和,则它应该类似于:
Toast.makeText(GameActivity.this,String.valueOf(math_int1+math_int2),Toast.LENGTH_SHORT.show()代码>谢谢,但我的应用程序仍然因为同样的原因崩溃,而你还没有告诉我们原因是什么,发布日志的相关部分发布日志的相关部分,我不知道你是否正在处理NPE。你是什么意思,错误消息?在logcat上?嗯,我看到这个答案现在与你大量编辑的问题不再相关了。在实现了我的修复之后,您基本上已经将这个问题改成了一个新的问题-不是它的工作方式-顺便问一下,它总是返回FALSE。您的问题与如何比较字符串有关。您可以尝试在EditText
的条目上使用Integer.parseInt()
。请注意,如果您的EditText
包含任何非数字字符,您需要尝试一下它以捕获异常。谢谢,它解决了我的问题。请注意。大量编辑您的问题通常不是一个好的做法,尤其是当它收到解决您最初问题的答案时。谢谢您的建议。我会在编辑我的文章时更加注意
if (type_answer.getText().toString().equals(String.valueOf (math_int1 + math_int2) {