Android Studio 中的计算器

Calculator in Android Studio

我一直在尝试在 android 中构建一个简单的计算器 studio.I 我是初学者,只有基础知识 java.I 我正在尝试接受单个文本字段中的值使用两个不同的文本 field.I 在我的运算符按钮上使用了点击侦听器,在等于 button.But 中我的应用程序在我点击运算符 buttons.How 时立即关闭我可以使用单个文本视图两个接受两个或更多数字并对它们应用数学运算符?

编辑:正如我已经说过的,我对 java.I 知之甚少,在发布此问题之前进行了 google 搜索。

        add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            n.setText("");
            final float a = Float.parseFloat(n.getText().toString());
            n.setText("");
            equals.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    float b = Float.parseFloat(n.getText().toString());
                    float c = a + b;
                    ans.setText("" + c);
                    n.setText("");
                }
            });
        }
    });

在你做的第一行:

n.setText("");

只有在那之后你才能用

阅读文本
n.getText().toString()

其中 returns 传递给 parseFloat() 的空字符串。 parseFloat() 不需要空字符串,因此它会抛出异常并关闭您的应用程序。

因此,在您实际读取您需要的值之前,不要设置 Text("")。

更一般地说,我会考虑在每次点击时保存当前状态。例如,您可以仅在键入一个数字、单击运算符按钮并键入另一个数字后才启用等于按钮。

这是 .java 文件。由于缺少 space.

,某些按钮代码丢失
one.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (equalcheck == true) {
            textViewresult.setText("");
            equalcheck = false;
        } else {
            textViewresult.setText(textViewresult.getText() + "1");
        }
    }
});
two.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (equalcheck == true) {
            textViewresult.setText("");
            equalcheck = false;
        } else

            textViewresult.setText(textViewresult.getText() + "2");
    }
});


seven.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (equalcheck == true) {
            textViewresult.setText("");
            equalcheck = false;
        }
        textViewresult.setText(textViewresult.getText() + "7");
    }
});


eight.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (equalcheck == true) {
            textViewresult.setText("");
            equalcheck = false;
        }
        textViewresult.setText(textViewresult.getText() + "8");

    }
});


nine.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (equalcheck == true) {
            textViewresult.setText("");
            equalcheck = false;
        }
        textViewresult.setText(textViewresult.getText() + "8");
    }
});

zero.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //textViewresult.setText("");
        textViewresult.setText(textViewresult.getText() + "0");
    }
});


dot.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (equalcheck == true) {
            textViewresult.setText("");
            equalcheck = false;
        }
        textViewresult.setText(textViewresult.getText() + ".");
    }
});

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

        if (textViewresult.getText() == "") {

            textViewresult.setText("");
        } else {
            val1 = Double.parseDouble(textViewresult.getText() + "");
            add = true;

            textViewresult.setText(null);
        }
    }
});

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

        if (textViewresult.getText() == "") {

            textViewresult.setText("");
        } else {
            val1 = Double.parseDouble(textViewresult.getText() + "");
            sub = true;
            textViewresult.setText(null);
        }
    }
});

multiply.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (textViewresult.getText() == "") {

            textViewresult.setText("");
        } else {
            val1 = Double.parseDouble(textViewresult.getText() + "");
            mul = true;
            textViewresult.setText(null);
        }
    }
});
division.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (textViewresult.getText() == "") {

            textViewresult.setText("");
        } else {
            val1 = Double.parseDouble(textViewresult.getText() + "");
            div = true;
            textViewresult.setText(null);
        }
    }
});

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

        if (textViewresult.getText() == "") {
            textViewresult.setText("");
        } else {
            equalcheck = true;
            val2 = Double.parseDouble(textViewresult.getText() + "");
            if (add == true) {
                textViewresult.setText(val1 + val2 + "");
                add = false;
            }
            if (sub == true) {
                textViewresult.setText(val1 - val2 + "");
                sub = false;
            }
            if (mul == true) {
                textViewresult.setText(val1 * val2 + "");
                mul = false;
            }
            if (div == true) {
                textViewresult.setText(val1 / val2 + "");
                div = false;
            }
        }
    }
});
clear.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        textViewresult.setText("");
    }
});
package com.example.rahul.calculator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
    Button one, two, three, four, five, six, seven, eight, nine, zero, plus,      minus, multiply, division, equal, dot, clear;
    TextView textViewresult = null;
    double val1, val2;

    boolean add, sub, div, mul;
    boolean equalcheck = false;

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

        one = (Button) findViewById(R.id.btn_1);
        two = (Button) findViewById(R.id.btn_2);
        three = (Button) findViewById(R.id.btn_3);
        four = (Button) findViewById(R.id.btn_4);
        five = (Button) findViewById(R.id.btn_5);
        six = (Button) findViewById(R.id.btn_6);
        seven = (Button) findViewById(R.id.btn_7);
        eight = (Button) findViewById(R.id.btn_8);
        nine = (Button) findViewById(R.id.btn_9);
        zero = (Button) findViewById(R.id.btn_0);
        plus = (Button) findViewById(R.id.btn_plus);
        minus = (Button) findViewById(R.id.btn_minus);
        multiply = (Button) findViewById(R.id.btn_multiply);
        division = (Button) findViewById(R.id.btn_divide);
        equal = (Button) findViewById(R.id.btn_equal);
        textViewresult = (TextView) findViewById(R.id.tv_result);
        dot = (Button) findViewById(R.id.btn_dot);
        clear = (Button) findViewById(R.id.btn_clear);


        one.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (equalcheck == true) {
                    textViewresult.setText("");
                    equalcheck = false;
                } else {
                    textViewresult.setText(textViewresult.getText() + "1");
                }
            }
        });


        two.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (equalcheck == true) {
                    textViewresult.setText("");
                    equalcheck = false;
                } else

                    textViewresult.setText(textViewresult.getText() + "2");
            }
        });


        three.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (equalcheck == true) {
                    textViewresult.setText("");
                    equalcheck = false;
                }
                textViewresult.setText(textViewresult.getText() + "3");
            }
        });


        four.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (equalcheck == true) {
                    textViewresult.setText("");
                    equalcheck = false;
                }
                textViewresult.setText(textViewresult.getText() + "4");
            }
        });


        five.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (equalcheck == true) {
                    textViewresult.setText("");
                    equalcheck = false;
                }
                textViewresult.setText(textViewresult.getText() + "5");
            }
        });


        six.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (equalcheck == true) {
                    textViewresult.setText("");
                    equalcheck = false;
                }
                textViewresult.setText(textViewresult.getText() + "6");
            }
        });


        seven.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (equalcheck == true) {
                    textViewresult.setText("");
                    equalcheck = false;
                }
                textViewresult.setText(textViewresult.getText() + "7");
            }
        });


        eight.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (equalcheck == true) {
                    textViewresult.setText("");
                    equalcheck = false;
                }
                textViewresult.setText(textViewresult.getText() + "8");

            }
        });


        nine.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (equalcheck == true) {
                    textViewresult.setText("");
                    equalcheck = false;
                }
                textViewresult.setText(textViewresult.getText() + "8");
            }
        });

        zero.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //textViewresult.setText("");
                textViewresult.setText(textViewresult.getText() + "0");
            }
        });


        dot.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (equalcheck == true) {
                    textViewresult.setText("");
                    equalcheck = false;
                }
                textViewresult.setText(textViewresult.getText() + ".");
            }
        });

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

                if (textViewresult.getText() == "") {

                    textViewresult.setText("");
                } else {
                    val1 = Double.parseDouble(textViewresult.getText() + "");
                    add = true;

                    textViewresult.setText(null);
                }
            }
        });

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

                if (textViewresult.getText() == "") {

                    textViewresult.setText("");
                } else {
                    val1 = Double.parseDouble(textViewresult.getText() + "");
                    sub = true;
                    textViewresult.setText(null);
                }
            }
        });

        multiply.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (textViewresult.getText() == "") {

                    textViewresult.setText("");
                } else {
                    val1 = Double.parseDouble(textViewresult.getText() + "");
                    mul = true;
                    textViewresult.setText(null);
                }
            }
        });
        division.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (textViewresult.getText() == "") {

                    textViewresult.setText("");
                } else {
                    val1 = Double.parseDouble(textViewresult.getText() + "");
                    div = true;
                    textViewresult.setText(null);
                }
            }
        });

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

                if (textViewresult.getText() == "") {

                    textViewresult.setText("");
                } else {

                    equalcheck = true;
                    val2 = Double.parseDouble(textViewresult.getText() + "");
                    if (add == true) {


                        textViewresult.setText(val1 + val2 + "");
                        add = false;

                    }
                    if (sub == true) {
                        textViewresult.setText(val1 - val2 + "");
                        sub = false;
                    }
                    if (mul == true) {
                        textViewresult.setText(val1 * val2 + "");
                        mul = false;
                    }
                    if (div == true) {
                        textViewresult.setText(val1 / val2 + "");
                        div = false;
                    }

                }

            }

        });
        clear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textViewresult.setText("");
            }
        });
    }
}
public class MainActivity extends AppCompatActivity
{
    private boolean op=false;
    private double f_value=0;
    private int s_value_index=0;
    private char oper;

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

    //Buttons and their values

        final TextView show= (TextView) findViewById(R.id.result);
        final Button n9= (Button) findViewById(R.id.n9);
        final Button n8= (Button) findViewById(R.id.n8);
        final Button add= (Button) findViewById(R.id.add);
        final Button clr= (Button) findViewById(R.id.clear);
        final Button dlt= (Button) findViewById(R.id.delete);
        final Button equal= (Button) findViewById(R.id.equal);

        final View.OnClickListener xal =new View.OnClickListener(){
            @Override
            public void onClick(View v){
                final int id=v.getId();
                switch (id){
                    case R.id.n9:{
                        show.append("9");
                        break;
                    }
                    case R.id.n8:{
                        show.append("8");
                        break;
                    }
                    case R.id.add:{
                        String content1=show.getText().toString();
                        s_value_index=content1.length()+1;
                        f_value= Double.parseDouble(content1);
                        op=true;
                        show.append("+");
                        oper='+';
                        break;
                    }
                    case R.id.equal:{
                        if(op)
                        {
                            if (oper=='+')
                            {
                                String content= show.getText().toString();
                                String content2=
                               content.substring(s_value_index,content.length());
                                double s_value=Double.parseDouble(content2);
                                s_value+=f_value;
                                show.setText(String.valueOf(s_value));
                            }
                        }
                        break;
                    }
                    default:
                        break;
                }
            }
        };
        n9.setOnClickListener(xal);
        n8.setOnClickListener(xal);
        add.setOnClickListener(xal);
        equal.setOnClickListener(xal);

        //Clears a single one
        clr.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str;
                str=show.getText().toString();
                int len=str.length();
                if(len>0)
                {
                    str=str.substring(0,len-1);
                    show.setText(str);
                }
            }
        });

        //Deletes the whole
        dlt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String s="";
                show.setText(s.toString());
            }
        });
    }
}

我在这里只使用两个数字 8(n8) 和 9(n9) 以及添加(+)、清除(clr)、删除(dlt) 按钮。 add 只会使用 double type variable 添加数字,cleardelete 用户输入的最后一个数字并删除将删除屏幕上的整个字符串(所有数字或任何特殊符号)(我正在使用 textView)。

**

> ***SIMPLE CALCULATOR CODE***

**


public class MainActivity extends AppCompatActivity {

    EditText edit;
    Button add, subtract, multiply, divide, equal,clr;
    TextView result;
    String operator;
    float temp1, temp2, sum;


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

        add = (Button) findViewById(R.id.addition);
        subtract = (Button) findViewById(R.id.subtraction);
        multiply = (Button) findViewById(R.id.multiplication);
        divide = (Button) findViewById(R.id.division);
        equal = (Button) findViewById(R.id.equal);
        result = (TextView) findViewById(R.id.result);
        edit = (EditText) findViewById(R.id.user_input);
        clr = (Button)findViewById(R.id.clear);

        try {
            //Additon
            add.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (temp1 == 0) {
                        temp1 = Float.parseFloat(edit.getText().toString());
                        operator = "+";
                        edit.setText("");
                    } else {

                        edit.setText("");
                    }
                }
            });

            //Division
            divide.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (temp1 == 0) {
                        temp1 = Float.parseFloat(edit.getText().toString());
                        operator = "/";

                        edit.setText("");
                    } else {
                        edit.setText("");
                    }
                }
            });

            //Subtract
            subtract.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (temp1 == 0) {
                        temp1 = Float.parseFloat(edit.getText().toString());
                        operator = "-";
                        edit.setText("");

                    } else {

                        edit.setText("");
                    }
                }
            });

            //Multiplication
            multiply.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (temp1 == 0) {
                        temp1 = Float.parseFloat(edit.getText().toString());
                        operator = "*";
                        edit.setText("");
                    } else {
                        edit.setText("");
                    }
                }
            });

            //Clear
            clr.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    temp1 = 0;
                    temp2 = 0;
                    edit.setText("");
                    result.setText("");

                }
            });

            //Equal
            equal.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (temp2 == 0) {
                        temp2 = Float.parseFloat(edit.getText().toString());
                        switch (operator) {
                            case "+":
                                sum = temp1 + temp2;

                                break;
                            case "-":
                                sum = temp1 - temp2;
                                break;
                            case "*":
                                sum = temp1 * temp2;
                                break;
                            case "/":
                                sum = temp1 / temp2;
                                break;

                        }
                        edit.setText(Float.toString(sum));
                        Toast.makeText(MainActivity.this,"RESULT IS DISPLAYED IN EDIT TEXT VIEW :", Toast.LENGTH_SHORT).show();
                        result.setText(Float.toString(temp1)+" "+operator+" "+Float.toString(temp2));

                    }

                    temp1 = 0;
                    temp2 = 0;
                }
            });
        } catch (Exception e) {
        }

    }
}