Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-错误消息_Java_Android_String_Android Studio_Android Edittext - Fatal编程技术网

Java Android-错误消息

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

我最近在将我的android代码编译到模拟器上时出错。游戏是这样的,当你点击一个按钮时,它会给你一个显示在文本视图上的数学问题,用户输入他们的答案(数字),然后点击“检查”按钮。当我点击该按钮时,它总是返回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);
}
}

非常感谢您的帮助,谢谢您的第一个错误

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) {