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

コードには 2 つの問題があります。最初にヘンリーがあなたの答えで述べたように、次の行を配置する必要があります。

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

onClickメソッドの内部

2 番目の問題は、次のようなすべてのチェックで==文字列比較を行うために使用していることです。if

     if(ope=="+")

equals()文字列比較を行うには、String メソッドを使用する必要があります。ここで述べたように、equals メソッドを使用する条件を変更します。

     if(ope.equals("+"))

==equals()文字列の内容を比較しながら、2 つの参照が同じメモリ位置を指しているかどうかを比較します。

于 2013-08-17T15:59:49.877 に答える