为了账号安全,请及时绑定邮箱和手机立即绑定

我的计算器等于按钮 运算效果不出来 求帮忙 纠结死了

package com.example.calculator;


import android.os.Bundle;

import android.app.Activity;

import android.util.Log;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;


public class MainActivity extends Activity implements OnClickListener{

private EditText et;

private Button bt0,bt1,bt2,bt3,bt4,bt5,bt6,

bt7,bt8,bt9,btC,btDEL,btjia,btjian,btcheng,btchu,btdengyu,btdian;

boolean flag;//清空标识   当运算出结果了 再点数字按钮 里面的内容会清空 所以要加标识

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

et=(EditText) findViewById(R.id.et);

bt0=(Button) findViewById(R.id.bt0);

bt1=(Button) findViewById(R.id.bt1);

bt2=(Button) findViewById(R.id.bt2);

bt3=(Button) findViewById(R.id.bt3);

bt4=(Button) findViewById(R.id.bt4);

bt5=(Button) findViewById(R.id.bt5);

bt6=(Button) findViewById(R.id.bt6);

bt7=(Button) findViewById(R.id.bt7);

bt8=(Button) findViewById(R.id.bt8);

bt9=(Button) findViewById(R.id.bt9);

btC=(Button) findViewById(R.id.btC);

btDEL=(Button) findViewById(R.id.btDEL);

btjia=(Button) findViewById(R.id.btjia);

btjian=(Button) findViewById(R.id.btjian);

btcheng=(Button) findViewById(R.id.btcheng);

btchu=(Button) findViewById(R.id.btchu);

btdengyu=(Button) findViewById(R.id.btdengyu);

btdian=(Button) findViewById(R.id.btdian);

//以上是实例化按钮

bt0.setOnClickListener(this);

bt1.setOnClickListener(this);

bt2.setOnClickListener(this);

bt3.setOnClickListener(this);

bt4.setOnClickListener(this);

bt5.setOnClickListener(this);

bt6.setOnClickListener(this);

bt7.setOnClickListener(this);

bt8.setOnClickListener(this);

bt9.setOnClickListener(this);

btDEL.setOnClickListener(this);

btC.setOnClickListener(this);

btjia.setOnClickListener(this);

btjian.setOnClickListener(this);

btcheng.setOnClickListener(this);

btchu.setOnClickListener(this);

btdengyu.setOnClickListener(this);

btdian.setOnClickListener(this);

//以上是设置按钮的点击事件

}

public void onClick(View v) {

String str = et.getText().toString();//取显示屏的内容

switch (v.getId()) {

case R.id.bt0:

case R.id.bt1:

case R.id.bt2:

case R.id.bt3:

case R.id.bt4:

case R.id.bt5:

case R.id.bt6:

case R.id.bt7:

case R.id.bt8:

case R.id.bt9:

case R.id.btdian:

if(flag){

flag=false;

str="";

et.setText(""); 

}

et.setText(str+((Button)v).getText());

//只要点数字按钮或者小数点按钮就把数字或小数点传给EditText显示出来 

break;

case R.id.btjia:

case R.id.btjian:

case R.id.btcheng:

case R.id.btchu:

if(flag){

flag=false;

str="";

et.setText("");

}

et.setText(str+""+((Button)v).getText()+"");

break;

case R.id.btDEL:

if(flag){

flag=false;

str="";

et.setText("");

}else if(str!=null&&!str.equals("")){

et.setText(str.substring(0,str.length()-1));

//如果不为空 获取显示屏从第一位开始 减一位数字

}

break;

case R.id.btC:

flag=false;

str="";

et.setText("");

break;

case R.id.btdengyu:

getResult();

break;

}

}

// 运算结果

private void getResult(){

String exp =et.getText().toString();//取显示屏的内容

if(exp==null||exp.equals("")){//如果获取内容是空的就返回

return;

}

if(!exp.contains("")){//因为运算符前面后面有空格 如果内容没有空格就是没有运算符 直接返回

return;

}

double result=0;//用于接收数据          //exp.indexOf("")是当前输入内容前面的第一个空格

String s1 = exp.substring(0,exp.indexOf(""));//运算符前面的字符串

                               //+1是运算符的位置   +2 是运算符下面的位置    

//indexOf() :在字符串中从前向后定位字符和字符串;所有的返回值都是指在字符串的绝对位置,如为空则为- 1

String op = exp.substring(exp.indexOf("")+1,exp.indexOf("")+2);//截取到的运算符

String s2 = exp.substring(exp.indexOf("")+3);//运算符后面的字符串

Log.v("S1", s1);

Log.v("OP", op);

Log.v("S2", s2);

if(!s1.equals("")&&!s2.equals("")){//即运算符前面有数字后面也有数字  例如3+4    8*9 

double d1 = Double.parseDouble(s1);//强制转化

double d2 = Double.parseDouble(s2);

if(op.equals("+")){

result=d1+d2;

et.setText(result+"");

}else if(op.equals("-")){

result=d1-d2;

}else if(op.equals("×")){

result=d1*d2;

}else if(op.equals("÷")){

if(d2==0){

result=0;

}else{

result=d1/d2; 

}

}

if(!s1.contains(".")&&!s2.contains(".")&&!op.equals("÷")){

int r=(int)result;//如果都没有小数点强制转换成int类型

et.setText(r+"");

}else{//有小数点就是double型

et.setText(result+"");

}

}else if(!s1.equals("")&&s2.equals("")){

et.setText(exp);

}else if(s1.equals("")&&!s2.equals("")){

double d2 = Double.parseDouble(s2);

if(op.equals("+")){

result=0+d2;

}else if(op.equals("-")){

result=0-d2;

}else if(op.equals("×")){

result=0;

}else if(op.equals("÷")){

result=0;

}

if(!s2.contains(".")){

int r=(int)result;

et.setText(r+"");

}else{

et.setText(result+"");

}

}else{

et.setText("");

}

}

}


正在回答

举报

0/150
提交
取消
Android攻城狮的第一门课(入门篇)
  • 参与学习       312584    人
  • 解答问题       4633    个

想快速掌握Android应用开发基础,选择学习这门课程就对了。

进入课程

我的计算器等于按钮 运算效果不出来 求帮忙 纠结死了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信