1

所以,我有我的这个安卓数学游戏。而且我很难弄清楚为什么会出现这些错误并尝试在互联网上找到一些代码但它不起作用。

我下面的代码没有错误。但是当我尝试运行它时,我的 logcat 中出现错误。

 check.setOnClickListener(new OnClickListener(){

        int x = Integer.valueOf(fn.getText().toString());
        int y = Integer.valueOf(sn.getText().toString());

        public void onClick(View v){
         String ope = op.getText().toString();


         if(ope=="+"){
             if(x + y == total2){
                 Toast.makeText(getApplicationContext(), "Answer is correct. You may proceed to level 2.", Toast.LENGTH_LONG).show();
             }
         }

         if(ope=="-"){
             if(x-y==total2){
                 Toast.makeText(getApplicationContext(), "Answer is correct. You may proceed to level 2.", Toast.LENGTH_LONG).show();
             }
         }  


         if(ope=="*"){
             if(x*y==total2){
                 Toast.makeText(getApplicationContext(), "Answer is correct. You may proceed to level 2.", Toast.LENGTH_LONG).show();
             }
         }

         if(ope=="/"){
             if(x/y==total2){
                 Toast.makeText(getApplicationContext(), "Answer is correct. You may proceed to level 2.", Toast.LENGTH_LONG).show();
             }
             else if(y/x==total2){
                 Toast.makeText(getApplicationContext(), "Answer is correct. You may proceed to level 2.", Toast.LENGTH_LONG).show();
             }

         }


         }});

这是我的LOGCAT:

在此处输入图像描述

我解析的没错吧?那么,为什么我会出现这些错误?

注意: fn 和 sn 是 textViews,op 也是。fn 和 sn 是用户放置操作数答案的地方,而 op 是运算符。游戏给出了这个随机数,用户应该点击 2 个操作数和一个运算符来制作一个等式并能够得出给定的随机数。她/他等式的结果应该与给定的随机数相同。

谢谢 :)

4

2 回答 2

3

您的代码中有两个问题。首先,正如亨利在您的回答中提到的那样,您需要输入以下几行:

  int x = Integer.valueOf(fn.getText().toString());
  int y = Integer.valueOf(sn.getText().toString());

onClick方法内部

第二个问题是您正在使用==在所有if检查中进行字符串比较,例如:

     if(ope=="+")

您应该使用 Stringequals()方法进行字符串比较。更改它和其他 if 条件以使用 equals 方法,如此处所述:

     if(ope.equals("+"))

==比较两个引用是否指向同一个内存位置,同时equals()比较字符串内容。

于 2013-08-17T15:59:49.877 回答
2

问题是您在附加 onClick 侦听器时获得xand值。y那时这些字段仍然是空的。

要解决这个问题,请放置这些行

    int x = Integer.valueOf(fn.getText().toString());
    int y = Integer.valueOf(sn.getText().toString());

方法里面onClick

于 2013-08-17T15:45:15.590 回答