Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.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
Java 安卓简易计算器_Java_Android_Textview_Calculator - Fatal编程技术网

Java 安卓简易计算器

Java 安卓简易计算器,java,android,textview,calculator,Java,Android,Textview,Calculator,我是android应用程序开发新手,我正在开发一个简单的计算器。 MainActivity.java文件如下所示- public class MainActivity extends Activity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setConten

我是android应用程序开发新手,我正在开发一个简单的计算器。

MainActivity.java文件如下所示-

public class MainActivity extends Activity implements OnClickListener 
{

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    View add = (Button)findViewById(R.id.Add);
    add.setOnClickListener(this);
    View substract = (Button)findViewById(R.id.Substract);
    substract.setOnClickListener(this);
    View multiply = (Button)findViewById(R.id.Multiply);
    multiply.setOnClickListener(this);
    View divide = (Button)findViewById(R.id.Divide);
    divide.setOnClickListener(this);
    View equals = (Button)findViewById(R.id.Equals);
    equals.setOnClickListener(this);
    //Numbers
    View nu1 = (Button)findViewById(R.id.n1);
    nu1.setOnClickListener(this);
    View nu2 = (Button)findViewById(R.id.n2);
    nu2.setOnClickListener(this);
    View nu3 = (Button)findViewById(R.id.n3);
    nu3.setOnClickListener(this);
    View nu4 = (Button)findViewById(R.id.n4);
    nu4.setOnClickListener(this);
    View nu5 = (Button)findViewById(R.id.n5);
    nu5.setOnClickListener(this);
    View nu6 = (Button)findViewById(R.id.n6);
    nu6.setOnClickListener(this);
    View nu7 = (Button)findViewById(R.id.n7);
    nu7.setOnClickListener(this);
    View nu8 = (Button)findViewById(R.id.n8);
    nu8.setOnClickListener(this);
    View nu9 = (Button)findViewById(R.id.n9);
    nu9.setOnClickListener(this);
    View nu0 = (Button)findViewById(R.id.n0);
    nu0.setOnClickListener(this);
    View ac = (Button)findViewById(R.id.AC);
    ac.setOnClickListener(this);
    View ce = (Button)findViewById(R.id.CE);
    ce.setOnClickListener(this);
    View del = (Button)findViewById(R.id.DEL);
    del.setOnClickListener(this);
    View pnt = (Button)findViewById(R.id.np);
    pnt.setOnClickListener(this);

}

@Override
public void onClick(View v) 
{
    float num1=0,numx=0;
    int choice=0;
    TextView num = (TextView)findViewById(R.id.Number);
    num.setOnClickListener(this);
    switch (v.getId())
    {
        case R.id.Add:
            choice=1;
            numx=num1;
            num1=0;
            num.setText("");
            break;
        case R.id.Substract:
            choice=2;
            numx=num1;
            num1=0;
            num.setText("");
            break;
        case R.id.Multiply:
            choice=3;
            numx=num1;
            num1=0;
            num.setText("");
            break;
        case R.id.Divide:
            choice=4;
            numx=num1;
            num1=0;
            num.setText("");
            break;
        case R.id.Equals:
            switch(choice)
            {
                case 1:
                    num1=numx+num1;
                    num.setText(""+num1);
                    choice=0;
                    break;
                case 2:
                    num1=num1-numx;
                    num.setText(""+num1);
                    choice=0;
                    break;
                case 3:
                    num1=num1*numx;
                    num.setText(""+num1);
                    choice=0;
                    break;
                case 4:
                    num1=num1/numx;
                    num.setText(""+num1);
                    choice=0;
                    break;
                case 0:
                    num.setText(""+num1);
                    choice=0;
                    break;
            }
        case R.id.n1:
            num1=num1*10+1;
            num.setText(""+num1);
            System.out.print(num1);
            break;
        case R.id.n2:
            num1=num1*10+2;
            num.setText(""+num1);
            break;
        case R.id.n3:
            num1=num1*10+3;
            num.setText(""+num1);
            break;
        case R.id.n4:
            num1=num1*10+4;
            num.setText(""+num1);
            break;
        case R.id.n5:
            num1=num1*10+5;
            num.setText(""+num1);
            break;
        case R.id.n6:
            num1=num1*10+6;
            num.setText(""+num1);
            break;
        case R.id.n7:
            num1=num1*10+7;
            num.setText(""+num1);
            break;
        case R.id.n8:
            num1=num1*10+8;
            num.setText(""+num1);
            break;
        case R.id.n9:
            num1=num1*10+9;
            num.setText(""+num1);
            break;
        case R.id.n0:
            num1=num1*10;
            num.setText(""+num1);
            break;
    }


}
}

我面临两个问题-

  • 如果我想输入超过一位数的任何数字,它不会发生。如果我按53,文本视图首先显示5.0,然后显示3.0

  • 其次,按下=按钮后,所有的计算结果总是给出1.0的输出


  • 谁能帮帮我

    为什么要在num上设置单击侦听器


    您正在定义选项,并在
    onClick
    方法中单击数字,然后每次单击其中一个按钮时重新初始化数字。这些应该是活动字段的一部分

    您必须在切换框(add,sub)中获取textviewnum的文本。例如
    num.getText().toString()。

    您可以发布xml代码吗?为什么需要这样做?数字存储在num1中,当按下add或任何操作数时,num1在num x中复制,num 1设置为0。因此,下一次按下数字时,第二个数字输入num1。按下=将num1和numx相加。数字存储在num1中…您告诉我您在textview中输入的数字存储在num1中…对吗?但代码在哪里???@kgop是对的。
    TextView
    仅显示数字,而这些数字存储在2个
    float
    变量中。在这种情况下,不需要使用
    num.getText().toString()
    。所以,不能通过实现OnClickListener来完成吗?我必须为OnCreate方法中的每个按钮调用OnClick(),这是可以做到的。我只是不明白为什么要设置click listener“num.setOnClickListener(this);”。我指出,每次单击btn时,都会初始化变量。例如,当您单击equals时,选择将是0I删除num.OnClickListener(),这是一个错误。我明白您的意思。我只是觉得在onClick()中使用switch case似乎比为每个按钮调用onClick()要好。我是否可以实现onClickLitener,并且每次都不会初始化这些值?静态说明符还是什么?他第二段的意思是将那些局部变量移到方法之外:put
    float num1=0,numx=0;int-choice=0@覆盖受保护的void onCreate()上方的code>
    。更多信息,请参阅。明白了……完全是个愚蠢的错误。我一直忘记Android的编码特性和java和C++一样!非常感谢你!