Android-错误消息

时间:2018-02-07 23:49:15

标签: java android string android-studio android-edittext

我最近在将我的Android代码编译到模拟器时遇到错误。游戏是当你点击一个按钮时,它会给你一个显示在textView上的数学问题,用户输入他们的答案(数字)并点击按钮'check'当我点击那个按钮时,它总是返回false。 任何人都知道如何解决这个问题?

Java类

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);
}

}

非常感谢帮助,谢谢

2 个答案:

答案 0 :(得分:0)

第一个错误

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"

也许

if (type_answer.getText().toString().equals(String.valueOf (math_int1 + math_int2) {

答案 1 :(得分:-1)

回答新格式化的问题:

当您想要检查其int值时,您的问题与比较两个字符串有关。您可以尝试在Integer.parseInt()条目中使用EditText。请注意,如果EditText有任何非数字字符,您需要尝试捕获异常。

在编辑之前回答有关崩溃的上一个问题:

您的EditText崩溃了。这是这一行:

Toast.makeText(GameActivity.this,math_int1 + math_int2 , Toast.LENGTH_SHORT).show();

通过传递一个int值,它试图查找具有该id的字符串。如果您的意图是显示这些整数的总和,它应该类似于:

Toast.makeText(GameActivity.this, String.valueOf(math_int1 + math_int2), Toast.LENGTH_SHORT).show();