在android studio中创建计算器(等号按钮不起作用)

时间:2017-10-11 22:15:57

标签: android

我在Android Studio中创建一个简单的计算器,但是相同的按钮不起作用。当我点击相等的按钮时,应用程序崩溃但它没有显示任何错误消息。其他按钮工作正常,我无法弄清楚为什么我的等号按钮不起作用。

这是我的MainActivity.java

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.EditText;
import android.view.View;
public class MainActivity extends AppCompatActivity {
private EditText showNum;
private Button one;
private Button two;
private Button three;
private Button four;
private Button five;
private Button six;
private Button seven;
private Button eight;
private Button nine;
private Button zero;
private Button divide;
private Button multiple;
private Button minus;
private Button equal;
private Button dot;
private Button plus;
private Button clear;
private Boolean addButton, multipleButton, minusButton, divideButton;
Float value, currentValue;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    showNum=(EditText) findViewById(R.id.editView);
    one = (Button)findViewById(R.id.button1);
    two = (Button)findViewById(R.id.button2);
    three = (Button)findViewById(R.id.button3);
    four = (Button)findViewById(R.id.button4);
    five = (Button)findViewById(R.id.button5);
    six = (Button)findViewById(R.id.button6);
    seven = (Button)findViewById(R.id.button7);
    eight = (Button)findViewById(R.id.button8);
    nine = (Button)findViewById(R.id.button9);
    zero = (Button)findViewById(R.id.button0);
    divide = (Button)findViewById(R.id.buttonDivide);
    multiple = (Button)findViewById(R.id.buttonMultiple);
    minus = (Button)findViewById(R.id.buttonMinus);
    equal = (Button)findViewById(R.id.buttonEqual);
    dot = (Button)findViewById(R.id.buttonDot);
    plus = (Button)findViewById(R.id.buttonPlus);
    clear = (Button)findViewById(R.id.buttonC);

    clear.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            showNum.setText("");
        }
    });
    zero.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            showNum.setText(showNum.getText()+"0");
        }
    });
    one.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            showNum.setText(showNum.getText()+"1");
        }
    });
    two.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            showNum.setText(showNum.getText()+"2");
        }
    });
    three.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            showNum.setText(showNum.getText()+"3");
        }
    });
    four.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            showNum.setText(showNum.getText()+"4");
        }
    });
    five.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            showNum.setText(showNum.getText()+"5");
        }
    });
    six.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            showNum.setText(showNum.getText()+"6");
        }
    });
    seven.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            showNum.setText(showNum.getText()+"7");
        }
    });
    eight.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            showNum.setText(showNum.getText()+"8");
        }
    });
    nine.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            showNum.setText(showNum.getText()+"9");
        }
    });
    dot.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            showNum.setText(showNum.getText()+".");
        }
    });
    divide.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            value = Float.parseFloat(showNum.getText()+"");
            divideButton=true;
            showNum.setText(null);

        }
    });
    multiple.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            if(showNum==null){
                showNum.setText("");
            }
            else{
                value = Float.parseFloat(showNum.getText()+"");
                multipleButton=true;
                showNum.setText(null);
            }


        }
    });
    plus.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            value = Float.parseFloat(showNum.getText()+"");
            addButton=true;
            showNum.setText(null);

        }
    });
    minus.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            value = Float.parseFloat(showNum.getText()+"");
            minusButton=true;
            showNum.setText(null);

        }
    });


    equal.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            currentValue = Float.parseFloat(showNum.getText()+"");
            if (divideButton) {
                showNum.setText(value / currentValue + "");
                divideButton = false;
                Log.i("gina", "b"+divideButton);
            }
            if (multipleButton){
                showNum.setText(value * currentValue + "");
                multipleButton = false;
            }
            if (addButton){
                showNum.setText(value+currentValue + "");
                addButton = false;
            }
            if (minusButton){
                showNum.setText(value-currentValue + "");
                minusButton = false;
            }
        }
    });


 }

}

以下是我的activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="com.iu.hsiaoyuanwang.proficiency2.MainActivity">
<EditText
    android:id="@+id/editView"
    android:layout_alignParentTop="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text=""
    android:padding="35dp"
    android:textSize="30sp"
    android:gravity="top|center" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/editView"
    android:orientation="vertical"
    android:id="@+id/linear1">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <Button
            android:id="@+id/button7"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="7"
            android:textSize="20dp" />

        <Button
            android:id="@+id/button8"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="8"
            android:textSize="20dp"
             />

        <Button
            android:id="@+id/button9"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:textSize="20dp"
            android:text="9" />
        <Button
            android:id="@+id/buttonDivide"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="÷"
            android:textSize="20dp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <Button
            android:id="@+id/button4"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="4"
            android:textSize="20dp" />

        <Button
            android:id="@+id/button5"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="5"
            android:textSize="20dp"
            />

        <Button
            android:id="@+id/button6"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:textSize="20dp"
            android:text="6" />
        <Button
            android:id="@+id/buttonMultiple"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="x"
            android:textSize="20dp" />
    </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

            <Button
                android:id="@+id/button1"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="1"
                android:textSize="20dp" />

            <Button
                android:id="@+id/button2"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="2"
                android:textSize="20dp"
                />

            <Button
                android:id="@+id/button3"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:textSize="20dp"
                android:text="3" />
            <Button
                android:id="@+id/buttonMinus"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="-"
                android:textSize="20dp" />
        </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <Button
            android:id="@+id/button0"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="0"
            android:textSize="20dp" />

        <Button
            android:id="@+id/buttonDot"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="."
            android:textSize="20dp"
            />

        <Button
            android:id="@+id/buttonEqual"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:textSize="20dp"
            android:text="=" />
        <Button
            android:id="@+id/buttonPlus"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="+"
            android:textSize="20dp" />

    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <Button
            android:id="@+id/buttonC"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="C"
            android:textSize="20dp" />

    </LinearLayout>


 </LinearLayout>

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

正如Kuti建议的那样,最好只保留一个OnClickListener,所以请记住他的建议。

布尔值是一个对象,不是真或假,所以当addButton是布尔值时,句子if(addButton)总是为假。尝试使用addButton.booleanValue()或使用布尔值而不是布尔值