Math.pow(X,Y)的java

问题描述 投票:-1回答:2

林作出的科学计算器,我想使用的电源功能,但它给了当我进入类似错误的答案可以说2作为第一值,然后3作为第二它给了我27,而不是8的令人沮丧的,请帮助,这是在switch语句中的电源按钮的代码:注意,首先看重的是除本switch语句前

确定这里是完整的代码

    package com.example.scienteficcalc;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        num =(TextView)findViewById(R.id.etnum);
        bsin=(Button)findViewById(R.id.bsin);
        bcos=(Button)findViewById(R.id.bcos);
        btan=(Button)findViewById(R.id.btan);
        bsec=(Button)findViewById(R.id.bsec);
        bcsc=(Button)findViewById(R.id.bcsc);
        bcot=(Button)findViewById(R.id.bcot);
        bln=(Button)findViewById(R.id.bln);
        blog=(Button)findViewById(R.id.blog);
        bpwr=(Button)findViewById(R.id.bpwr);
        broot=(Button)findViewById(R.id.broot);
        bmod=(Button)findViewById(R.id.bmod);
        one=(Button)findViewById(R.id.b1);
        two=(Button)findViewById(R.id.b2);
        three=(Button)findViewById(R.id.b3);
        four=(Button)findViewById(R.id.b4);
        five=(Button)findViewById(R.id.b5);
        six=(Button)findViewById(R.id.b6);
        seven=(Button)findViewById(R.id.b7);
        eight=(Button)findViewById(R.id.b8);
        nine=(Button)findViewById(R.id.b9);
        zero=(Button)findViewById(R.id.b0);
        equal=(Button)findViewById(R.id.bequal);
        clear=(Button)findViewById(R.id.bc);



        bsin.setOnClickListener(this);
        bcos.setOnClickListener(this);
        btan.setOnClickListener(this);
        bsec.setOnClickListener(this);
        bcsc.setOnClickListener(this);
        bcot.setOnClickListener(this);
        bln.setOnClickListener(this);
        blog.setOnClickListener(this);
        bpwr.setOnClickListener(this);
        broot.setOnClickListener(this);
        bmod.setOnClickListener(this);

        //numbers

        one.setOnClickListener(this);
        two.setOnClickListener(this);
        three.setOnClickListener(this);
        four.setOnClickListener(this);
        five.setOnClickListener(this);
        six.setOnClickListener(this);
        seven.setOnClickListener(this);
        eight.setOnClickListener(this);
        nine.setOnClickListener(this);
        zero.setOnClickListener(this);
        equal.setOnClickListener(this);
        clear.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {

        if(v.equals(one))
            num.setText(num.getText()+""+one.getText());
        if(v.equals(two))
            num.setText(num.getText()+""+two.getText());
        if(v.equals(three))
            num.setText(num.getText()+""+three.getText());
        if(v.equals(four))
            num.setText(num.getText()+""+four.getText());
        if(v.equals(five))
            num.setText(num.getText()+""+five.getText());
        if(v.equals(six))
            num.setText(num.getText()+""+six.getText());
        if(v.equals(seven))
            num.setText(num.getText()+""+seven.getText());
        if(v.equals(eight))
            num.setText(num.getText()+""+eight.getText());
        if(v.equals(nine))
            num.setText(num.getText()+""+nine.getText());
        if(v.equals(zero))
            num.setText(num.getText()+""+zero.getText());
        /*if(v.equals(clear))
            num.setText("0");*/

        input = Double.valueOf(num.getText().toString());

        switch(v.getId())
        {
        case R.id.bsin:



            output= Math.sin(input);
            answer=String.valueOf(output);

            num.setText(answer);

            break;
        case R.id.bcos:


            output= Math.cos(input);
            answer=String.valueOf(output);

            num.setText(answer);
            break;

        case R.id.btan:

            output= Math.tan(input);
            answer=String.valueOf(output);

            num.setText(answer);
            break;
        case R.id.bcsc:



            output= 1/Math.sin(input);

            answer=String.valueOf(output);

            num.setText(answer);
            break;
        case R.id.bsec:



            output= 1/Math.cos(input);

            answer=String.valueOf(output);

            num.setText(answer);
            break;
        case R.id.bcot:


        output= 1/ Math.tan(input);
        answer=String.valueOf(output);

        num.setText(answer);
        break;
        case R.id.blog:

            output = Math.log(input);
            answer=String.valueOf(output);

            num.setText(answer);
            break;
        case R.id.bln:



            output = 2.30258*Math.log(input);
            answer=String.valueOf(output);

            num.setText(answer);
            break;
        case R.id.bpwr:


            num.setText("");

             equal.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub

                    input2= Double.valueOf(num.getText().toString());
                    output = Math.pow(input, input2);

                    answer=String.valueOf(output);

             num.setText(answer);
                }
            });


             break;
        case R.id.broot:
            output= Math.sqrt(input);
            answer=String.valueOf(output);

             num.setText(answer);
             break;
        case R.id.bc:

            Intent intent = getIntent();
             finish();
             startActivity(intent);

            break;


        }

    }

}
java android math onclick switch-statement
2个回答
3
投票

Math.pow不能失败。

我高度怀疑你复制/粘贴你的代码,如果你看一看:

input = Double.valueOf(num.getText().toString());

input2= Double.valueOf(num.getText().toString());

您可以从同一editText得到的值。所以,如果num包含“3”,你计算3^3,这等于27


0
投票

Math.pow(2,3)应该给你8:P再次检查你的代码。你可能会从错误EDITTEXT读取输入犯了一个错误。尝试普林出num.setText("input1 value: input1 + " - input2 value: " + input2),看看是否一切是正确的。

编辑:阅读完整的代码后,您input变种被设定每次onClick函数被调用。你需要这样的东西 if(input == null) input = Double.valueOf(num.getText().toString());

并尽快设置input = null因为你不需要它了

© www.soinside.com 2019 - 2024. All rights reserved.