违规用户
2017-08-03 14:59
采纳率: 50%
浏览 759
已采纳

请问%的怎么实现.在网上找了好多案例,就是不能实现

代码写的比较渣,勿吐槽,新手写了一个星期
基本功能是可以实现的,就是百分号那个真的没法实现,有会的大神麻烦教下
public class MainActivity extends Activity implements View.OnClickListener {
/*
利用数组装变量,并创建button数组存放相应的变量
*/
private int[] btn = {R.id.zero, R.id.one, R.id.two, R.id.three, R.id.four, R.id.five, R.id.six, R.id.seven, R.id.eight, R.id.nine};
private Button[] bnum = new Button[btn.length];
private int[] takes = {R.id.jia, R.id.jian, R.id.cheng, R.id.chu};
private Button[] take = new Button[takes.length];
private int[] btc = {R.id.dot, R.id.zf, R.id.xc, R.id.qc, R.id.tg, R.id.bai, R.id.lf, R.id.pf, R.id.fen, R.id.sum};
private Button[] btcl = new Button[btc.length];
private EditText editText;
boolean clear_flag; //用于:当已经运算出结果的时候,我们再次点击数字按钮的时候,清空屏幕的作用!
private String opt; //加减乘除通用变量
double num1, num2; //第一个值,第二个值

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //获取输入框
    editText = (EditText) findViewById(R.id.edittext);
    //输入框复制空字符串
    editText.setText("");
    //输入框不能够输入,只能接收按钮点击事件
    editText.setEnabled(false);
    //利用循环遍历给每个button分类进行实例化并实现OnClickListener接口
    for (int i = 0; i < btn.length; i++) {
        bnum[i] = (Button) findViewById(btn[i]);
        bnum[i].setOnClickListener(this);
    }
    for (int i = 0; i < takes.length; i++) {
        take[i] = (Button) findViewById(takes[i]);
        take[i].setOnClickListener(this);
    }
    for (int i = 0; i < btc.length; i++) {
        btcl[i] = (Button) findViewById(btc[i]);
        btcl[i].setOnClickListener(this);
    }

}

@Override
public void onClick(View v) {
    String str = editText.getText().toString();     //获取当前edittext的内容
    //利用switch多分支语句
    switch (v.getId()) {
        case R.id.zero:
        case R.id.one:
        case R.id.two:
        case R.id.three:
        case R.id.four:
        case R.id.five:
        case R.id.six:
        case R.id.seven:
        case R.id.eight:
        case R.id.nine:
        case R.id.dot:
            if (clear_flag) {
                clear_flag = false;
                str = "";
                editText.setText("");
            }
            editText.setText(str + ((Button) v).getText());
            break;
        //加法
        case R.id.jia: {
            if (!TextUtils.isEmpty(str)) {
                String str1 = editText.getText().toString();
                num1 = Double.parseDouble(str1);
                opt = "+";
                editText.setText(opt);
                break;
            }

        }
        //减法
        case R.id.jian: {
            if (!TextUtils.isEmpty(str)) {
                String str1 = editText.getText().toString();
                num1 = Double.parseDouble(str1);
                opt = "-";
                editText.setText(opt);
                break;
            }
        }
        //乘法
        case R.id.cheng: {
            if (!TextUtils.isEmpty(str)) {
                String str1 = editText.getText().toString();
                num1 = Double.parseDouble(str1);
                opt = "*";
                editText.setText(opt);
                break;
            }
        }
        //除法
        case R.id.chu: {
            if (!TextUtils.isEmpty(str)) {
                String str1 = editText.getText().toString();
                num1 = Double.parseDouble(str1);
                opt = "/";
                editText.setText(opt);
                break;
            }
        }
        //消除 与清除一个功能
        case R.id.xc:
            clear_flag = false;
            editText.setText("");
            break;
        //退格键
        case R.id.tg:
            if (clear_flag) {
                clear_flag = false;
                editText.setText("");
            } else if (str != null && !str.equals("")) {
                editText.setText(str.substring(0, str.length() - 1));
            }

            break;
        //清除 与消除一个功能
        case R.id.qc:
            Toast toast = Toast.makeText(this, "与消除功能一样", Toast.LENGTH_SHORT);
            toast.show();
            //根计算
        case R.id.lf:
            if (!TextUtils.isEmpty(str)) {
                String str1 = editText.getText().toString();
                num1 = Double.parseDouble(str);
                if (num1 < 0) {
                    editText.setText("负数没有平方根");
                } else {
                    editText.setText(Math.sqrt(num1) + "");
                }
                break;

            }
            //正负计算
        case R.id.zf:
            if (!TextUtils.isEmpty(str)) {
                String str1 = editText.getText().toString();
                num1 = Double.parseDouble(str1);
                if (str.length() > 0)
                    editText.setText(-num1 + "");
                break;
            }
        case R.id.bai:
            if (!TextUtils.isEmpty(str)) {

            }
            //平方计算
        case R.id.pf:
            if (!TextUtils.isEmpty(str)) {
                String str1 = editText.getText().toString();
                num1 = Double.parseDouble(str1);
                editText.setText(String.valueOf(num1 * num1));
            }
            //  1/x计算
        case R.id.fen:
            if (!TextUtils.isEmpty(str)) {
                String str1 = editText.getText().toString();
                num1 = Double.parseDouble(str1);
                editText.setText(String.valueOf(1 / num1));
            }
        case R.id.sum:

              if (opt == "+") {
                  String str1 = editText.getText().toString();
                  num2 = Double.parseDouble(str);
                  editText.setText(String.valueOf(num1 + num2));
              } else if (opt == "-") {
                  String str1 = editText.getText().toString();  //获取输入框的值
                  str = str.substring(1);
                  num2 = Double.parseDouble(str);
                  editText.setText(String.valueOf(num1 - num2));
              } else if (opt == "*") {
                  String str1 = editText.getText().toString();
                  str = str.substring(1);
                  num2 = Double.parseDouble(str);
                  editText.setText(String.valueOf(num1 * num2));
              } else if (opt == "/") {
                  String str1 = editText.getText().toString();
                  str = str.substring(1);
                  num2 = Double.parseDouble(str);
                  editText.setText(String.valueOf(num1 / num2));
              }


            break;
    }
}

}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • wcf2010 2017-08-04 03:16
    已采纳

    取模运算只能是整数 先确保输入进来的数为正整数
    1、先把num1和num2转换为正整数
    long a=(long)num1;//强制转
    long b=(long)num2;

    2、求结果
    else if (opt == "%")
    long tmpnum=a%b;
    editText.setText(String.valueOf(tmpnum));

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题