Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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
Android Studio上的Java计算器应用程序是';它不能像人们想象的那样运作_Java_Android_Calculator - Fatal编程技术网

Android Studio上的Java计算器应用程序是';它不能像人们想象的那样运作

Android Studio上的Java计算器应用程序是';它不能像人们想象的那样运作,java,android,calculator,Java,Android,Calculator,我是一个初学者,所以如果这是一个愚蠢的错误或什么,请不要评判我。 我正在尝试使用Java和android studio制作一个计算器,但在进行加法、减法和乘法时似乎出现了问题。调试时,我发现变量ans在添加时自动变为0。这里的问题是什么。请帮忙 package com.example.simplecalculator; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import andro

我是一个初学者,所以如果这是一个愚蠢的错误或什么,请不要评判我。 我正在尝试使用Java和android studio制作一个计算器,但在进行加法、减法和乘法时似乎出现了问题。调试时,我发现变量ans在添加时自动变为0。这里的问题是什么。请帮忙

package com.example.simplecalculator;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

TextView tvHead;
EditText etDisplay;
Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn0, btnPlus, btnMinus, btnDiv, btnMul, btnDot, btnEquals, btnClear;
float res1, res2;
float ans;
boolean add, subtract, divide, multiply;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tvHead = findViewById(R.id.tvHead);
    etDisplay = findViewById(R.id.etDisplay);
    btn0 = findViewById(R.id.btn0);
    btn1 = findViewById(R.id.btn1);
    btn2 = findViewById(R.id.btn2);
    btn3 = findViewById(R.id.btn3);
    btn4 = findViewById(R.id.btn4);
    btn5 = findViewById(R.id.btn5);
    btn6 = findViewById(R.id.btn6);
    btn7 = findViewById(R.id.btn7);
    btn8 = findViewById(R.id.btn8);
    btn9 = findViewById(R.id.btn9);
    btnPlus = findViewById(R.id.btnPlus);
    btnMinus = findViewById(R.id.btnMinus);
    btnMul = findViewById(R.id.btnMul);
    btnDiv = findViewById(R.id.btnDiv);
    btnDot = findViewById(R.id.btnDot);
    btnEquals = findViewById(R.id.btnEquals);
    btnClear = findViewById(R.id.btnClear);

    btn0.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            etDisplay.setText(etDisplay.getText()   + "0");

        }
    });
    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            etDisplay.setText(etDisplay.getText()   + "1");

        }
    });
    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            etDisplay.setText(etDisplay.getText() +"2");

        }
    });
    btn3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            etDisplay.setText(etDisplay.getText() + "3");

        }
    });
    btn4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            etDisplay.setText(etDisplay.getText() + "4");

        }
    });
    btn5.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            etDisplay.setText(etDisplay.getText() + "5");

        }
    });
    btn6.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            etDisplay.setText(etDisplay.getText() + "6");

        }
    });
    btn7.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            etDisplay.setText(etDisplay.getText() + "7");

        }
    });
    btn8.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            etDisplay.setText(etDisplay.getText() + "8");

        }
    });
    btn9.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            etDisplay.setText(etDisplay.getText() + "9");

        }
    });
    btnDot.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            etDisplay.setText(etDisplay.getText() + ".");

        }
    });
    btnClear.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            etDisplay.setText(null);
        }
    });

    btnPlus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            res1 = Float.parseFloat(etDisplay.getText().toString());
            etDisplay.setText(null);
            add = true;

        }
    });

    btnMinus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            res1 = Float.parseFloat(etDisplay.getText().toString());
            etDisplay.setText(null);
            subtract = true;

        }
    });

    btnMul.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            res1 = Float.parseFloat(etDisplay.getText().toString());
            etDisplay.setText(null);
            multiply = true;

        }
    });

    btnDiv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            res1 = Float.parseFloat(etDisplay.getText().toString());
            etDisplay.setText(null);
            divide = true;

        }
    });

   btnEquals.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {

           res2 = Float.parseFloat(etDisplay.getText().toString());

           if (etDisplay.getText().toString().isEmpty())
           {
               etDisplay.setText("");
           }

           if (add = true)
           {
               ans = res1 + res2;
               add = false;
           }
           if (subtract = true)
           {
               ans = res1-res2;
               subtract = false;
           }
           if (multiply = true)
           {
               ans = res1*res2;
               multiply = false;
           }
           if (divide = true)
           {
               ans = res1/res2;
               divide = false;
           }

           String answer = ans+"";
           etDisplay.setText(answer);

       }
   });




}

}

您无意中为布尔值赋值,而不是检查它们是否为真:

您应该使用
=
进行比较,而不是
=
。但是,对于
boolean
,您根本不需要比较:

if (add)
// ...

if (subtract)
// ...

if (multiply)
// ...

if (divide)
// ...

您无意中为布尔值赋值,而不是检查它们是否为真:

您应该使用
=
进行比较,而不是
=
。但是,对于
boolean
,您根本不需要比较:

if (add)
// ...

if (subtract)
// ...

if (multiply)
// ...

if (divide)
// ...

对于每个数字按钮,您可以使用相同的方法改进代码,并在xml中放置与数字对应的相同标记。例如
android:tag=“1”


对于每个数字按钮,您可以使用相同的方法改进代码,并在xml中放置与数字对应的相同标记。例如
android:tag=“1”


请阅读有关调试代码的提示。我还建议学习如何使用Android Sutdio调试器。是调试的一般概述。请阅读有关调试代码的提示。我还建议学习如何使用Android Sutdio调试器。是调试的一般概述。哦,是的!正确的!!!谢谢你,伙计。现在一切正常!伙计!跑起来感觉很棒。哦,是的!正确的!!!谢谢你,伙计。现在一切正常!伙计!跑起来感觉很棒。我一定要试试这个。谢谢。我一定要试试这个。谢谢
btn1.setOnClickListener(onClickListener);
btn2.setOnClickListener(onClickListener);
btn3.setOnClickListener(onClickListener);
...
public View.OnClickListener onClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                        etDisplay.setText(etDisplay.getText()   + v.getTag().toString());
                }

            }
        };