简体   繁体   English

等于计算器不执行任何操作的按钮(Android Developer Tools)

[英]Equals button in calculator doing nothing (Android Developer Tools)

I cant really figure out, I am beginner to programming, doing it for about 2 months. 我真的无法弄清楚,我是编程的初学者,做了大约2个月。 I have made calculator for Android, but problem is that equals button does nothing. 我已经为Android制作了计算器,但是问题是equals按钮什么也没做。

Setting up different variables: 设置不同的变量:

Button one,two,three,four,five,six,seven,eight,nine,zero,plus,minus,divide,multiply,dot,equals;
ImageButton clear;
TextView result;
String theresult;

All buttons except equals just append respective text to variable result. 除等于之外的所有按钮都仅将相应的文本附加到变量结果中。

Here is code of only equal button(created just plus to test, but failed): 这是仅相等按钮的代码(创建时只是为了进行测试,但失败了):

    equals = (Button) findViewById(R.id.equals);
    equals.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            String expression = String.valueOf(result);

            if(expression.contains("+")){
            String[] numbers = expression.split("\\+");
            String no1 = numbers[0];
            String no2 = numbers[1];

            Double numb1 = Double.valueOf(no1);
            Double numb2 = Double.valueOf(no2);
            Double added = numb1+numb2;

            theresult = String.valueOf(added);
            result.setText(theresult);


            }
        }
    });

I have used if here, so that I can use else if to make other operations work. 我在这里使用过if,以便在进行其他操作时可以使用else。 Later on I will use Try-Catch block too. 稍后,我也将使用Try-Catch块。 Thank you for your time! 感谢您的时间!

Full code of MainActivity.java MainActivity.java的完整代码

package org.example.calc;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;

public class MainActivity extends Activity {

Button one,two,three,four,five,six,seven,eight,nine,zero,plus,minus,divide,multiply,dot,equals;
ImageButton clear;
TextView result;
String theresult;




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

    result = (TextView) findViewById(R.id.result);

    one = (Button) findViewById(R.id.one);
    one.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("1");
        }
    });


    two = (Button) findViewById(R.id.two);
    two.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("2");
        }
    });

    three = (Button) findViewById(R.id.three);
    three.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("3");
        }
    });

    four = (Button) findViewById(R.id.four);
    four.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("4");
        }
    });

    five = (Button) findViewById(R.id.five);
    five.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("5");
        }
    });


    six = (Button) findViewById(R.id.six);
    six.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("6");
        }
    });


    seven = (Button) findViewById(R.id.seven);
    seven.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("7");
        }
    });

    eight = (Button) findViewById(R.id.eight);
    eight.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("8");
        }
    });

    nine = (Button) findViewById(R.id.nine);
    nine.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("9");
        }
    });


    zero = (Button) findViewById(R.id.zero);
    zero.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("0");
        }
    });

    dot = (Button) findViewById(R.id.dot);
    dot.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append(".");
        }
    });


    clear = (ImageButton) findViewById(R.id.clear);
    clear.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.setText("");
        }
    });


    plus = (Button) findViewById(R.id.plus);
    plus.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("+");
        }
    });

    minus = (Button) findViewById(R.id.minus);
    minus.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("-");
        }
    });

    divide = (Button) findViewById(R.id.divide);
    divide.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("/");
        }
    });


    multiply = (Button) findViewById(R.id.multiply);
    multiply.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            result.append("x");
        }
    });


    equals = (Button) findViewById(R.id.equals);
    equals.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            result.getText();
            String expression = String.valueOf(result);

            if(expression.contains("+")){
            String[] numbers = expression.split("\\+");
            String no1 = numbers[0];
            String no2 = numbers[1];

            Double numb1 = Double.valueOf(no1);
            Double numb2 = Double.valueOf(no2);
            Double added = numb1+numb2;

            theresult = String.valueOf(added);
            result.setText(theresult);


            }
        }
    });




}

@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 boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

} }

Just do thus: 因此,只需执行以下操作:

@Override
public void onClick(View v) {
    String expression = result.getText().toString();
    // Log.d("LOG", expression);

    if(expression.contains("+")){
        (...)

Maybe work. 也许工作。 No need of using String.valueOf() 无需使用String.valueOf()

When you press your equals button you have to get the value of the textview by result.getText() so that you will get the value of text view and assign it in some string. 当您按下等号按钮时,必须通过result.getText()获取textview的值,以便获取text view的值并将其分配给某些字符串。 String expression = String.valueOf(result); 字符串表达式= String.valueOf(result);

Here you are simply using the result in String.valueOf(). 在这里,您只是在String.valueOf()中使用结果。 Check whether your are getting the correct value or not by debugging or some sort of print statments. 通过调试或某种打印说明来检查您的值是否正确。

Also post your code completely/reasonable code to avoid more questions so that you will get your answer. 另外,请完全/合理地发布代码,以避免出现更多问题,以便获得答案。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM