android 计算器,纯手打,功能实现了,bug可能还有点

主类代码:

package com.leige.calc;




import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.regex.Pattern;


import android.app.Activity;
import android.location.GpsStatus.Listener;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;




public class MainActivity extends Activity implements OnClickListener{


private static final String Button = null;
TextView show=null;
//声明控件
Button bt_0=null;
Button bt_1=null;
Button bt_2=null;
Button bt_3=null;
Button bt_4=null;
Button bt_5=null;
Button bt_6=null;
Button bt_7=null;
Button bt_8=null;
Button bt_9=null;
Button bt_jia=null;
Button bt_jian=null;
Button bt_cheng=null;
Button bt_chu=null;
Button bt_deng=null;
Button bt_c=null;
Button bt_del=null;
Button bt_point=null;
private String exp="";
private double num1=0;
private String op="";
private double num2=0;
private boolean flag=true;//设置合法点击标志,如果不合法,就设为false
//点击完=,结果未清空,不能点击数字
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //实例化控件
        bt_0=(Button) findViewById(R.id.bt_0);
        bt_1=(Button) findViewById(R.id.bt_1);
        bt_2=(Button) findViewById(R.id.bt_2);
        bt_3=(Button) findViewById(R.id.bt_3);
        bt_4=(Button) findViewById(R.id.bt_4);
        bt_5=(Button) findViewById(R.id.bt_5);
        bt_6=(Button) findViewById(R.id.bt_6);
        bt_7=(Button) findViewById(R.id.bt_7);
        bt_8=(Button) findViewById(R.id.bt_8); 
        bt_9=(Button) findViewById(R.id.bt_9);
        bt_jia=(Button) findViewById(R.id.bt_jia);
        bt_jian=(Button) findViewById(R.id.bt_jian);
        bt_cheng=(Button) findViewById(R.id.bt_cheng);
        bt_chu=(Button) findViewById(R.id.bt_chu);
        bt_deng=(Button) findViewById(R.id.bt_deng);
        bt_point=(Button) findViewById(R.id.bt_point);
        bt_c=(Button) findViewById(R.id.bt_c);
        bt_del=(Button) findViewById(R.id.bt_del);
        show=(TextView) findViewById(R.id.show);
        //注册监听接口
        bt_0.setOnClickListener(this);
        bt_1.setOnClickListener(this);
        bt_2.setOnClickListener(this);
        bt_3.setOnClickListener(this);
        bt_4.setOnClickListener(this);
        bt_5.setOnClickListener(this);
        bt_6.setOnClickListener(this);
        bt_7.setOnClickListener(this);
        bt_8.setOnClickListener(this);
        bt_9.setOnClickListener(this);
        bt_point.setOnClickListener(this);
        OnClickListener listener=new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//点击完操作符后读取第一个操作数
num1=Double.parseDouble(exp);
//记录操作符
op=(String) ((Button)findViewById(v.getId())).getText();
exp+=op;
show.setText(exp);
if(flag==false){
//设置标志,防止用户点完=好直接点击数字如果点击操作符op在设置为合法状态即true
flag=true;
}
}
};
        bt_jia.setOnClickListener(listener);
        bt_jian.setOnClickListener(listener);
        bt_cheng.setOnClickListener(listener);
        bt_chu.setOnClickListener(listener);
        //点击等号时记录第二个操作数,计算开始
        OnClickListener deng=new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
double result;
//读取第二个操作数
num2=Double.parseDouble(
exp.substring(exp.indexOf(op)+1, exp.length()));
if(op.equals("+")){
result=num1+num2;
}else if(op.equals("-")){
result=num1-num2;
}else if(op.equals("*")){
result=num1*num2;
}else{
result=num1/num2;
}
exp=new DecimalFormat("0.0000").format(result)+"";
show.setText(exp);
//设置标志,防止用户点完=好直接点击数字如果点击操作符op在设置为合法状态即true
flag=false;

}
};
        bt_deng.setOnClickListener(deng);
  
        bt_del.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(exp==null||exp.equals("")||exp.length()<=1){
Toast.makeText(MainActivity.this, 
"亲!不要瞎点啊", 1000).show();
}else{

exp=exp.substring(0,exp.length()-1);
show.setText(exp);
}
}
});
        bt_c.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
exp="";
show.setText(exp);

}
});


 
    }
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(flag){
exp+=((Button)findViewById(v.getId())).getText();
show.setText(exp);
}else{

//flag位设置合法点击标志,如果不合法,就设为false
//点击完=,结果未清空,不能点击数字,如果直接点击显示错误信息,清空表达式
Toast.makeText(MainActivity.this, 
"亲!要先清空哦!亲", 1000).show();
//重新开始
exp="";
exp+=((Button)findViewById(v.getId())).getText();
show.setText(exp);
flag=true;
}
}


    


}


string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>


    <string name="app_name">Calc</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <color name="white">#ffffff</color>
    <color name="red">#ff0000</color>
    <color name="green">#00ff00</color>
    <color name="blue">#0000ff</color>
    <color name="gray">#f0f0f0</color>
    <string name="bt_1">1</string>
    <string name="bt_2">2</string>
    <string name="bt_3">3</string>
    <string name="bt_4">4</string>
    <string name="bt_5">5</string>
    <string name="bt_6">6</string>
    <string name="bt_7">7</string>
    <string name="bt_8">8</string>
    <string name="bt_9">9</string>
    
     <string name="bt_jia">+</string>
    <string name="bt_cheng">*</string>
    <string name="bt_jian">-</string>
    <string name="bt_chu">/</string>


    <string name="bt_c">C</string>
    <string name="bt_del">DEL</string>
    <string name="bt_point">.</string>
    <string name="bt_0">0</string>
    <string name="bt_deng">=</string>
    <string name="calc">磊哥定制版!!威武</string>


</resources>

布局文件

布局比较挫,没有好好整

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <EditText
        android:id="@+id/show"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:enabled="false"
        android:ems="10"
        android:textColor="@color/green"
        android:background="@drawable/calc_show" >


        <requestFocus />
    </EditText>


    <TableLayout
        
        android:stretchColumns="*"
        android:shrinkColumns="3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        
            >
          <TableRow
            android:id="@+id/tr0"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >


            <Button
                android:id="@+id/bt_c"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_c" 
                
                />


            <Button
                android:id="@+id/bt_del"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_del" />


            <Button
                android:id="@+id/bt_jia"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_jia" />


            <Button
                android:id="@+id/bt_jian"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_jian" />


        </TableRow>
        <TableRow
            android:id="@+id/tr1"
              android:layout_width="match_parent"
            android:layout_height="match_parent" >


            <Button
                android:id="@+id/bt_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_1" />


            <Button
                android:id="@+id/bt_2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_2" />


            <Button
                android:id="@+id/bt_3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_3" />


            <Button
                android:id="@+id/bt_cheng"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_cheng" 
                />


        </TableRow>


        
        
             <TableRow
            android:id="@+id/tr_2"
             android:layout_width="match_parent"
            android:layout_height="match_parent" >
             >


            <Button
                android:id="@+id/bt_4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_4" />


            <Button
                android:id="@+id/bt_5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_5" />


            <Button
                android:id="@+id/bt_6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_6" />


            <Button
                android:id="@+id/bt_chu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_chu" />


        </TableRow>
                     <TableRow
            android:id="@+id/tr_3"
              android:layout_width="match_parent"
            android:layout_height="match_parent" >
            <Button
                android:id="@+id/bt_7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_7" />


            <Button
                android:id="@+id/bt_8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_8" />


            <Button
                android:id="@+id/bt_9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_span="2"
                android:text="@string/bt_9" />


            


        </TableRow>
   
                     <TableRow
            android:id="@+id/tr_4"
     
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
             <Button
                android:id="@+id/bt_0"
                android:layout_span="2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_0" />
            <Button
                android:id="@+id/bt_point"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_point" />


    <Button
                android:id="@+id/bt_deng"


                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/bt_deng" />


        </TableRow>


                     <TableRow
                         android:id="@+id/tableRow1"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content" >


                         <ImageView
                             android:id="@+id/imageView1"
                             android:layout_width="180dp"
                             android:layout_height="180dp"
                             android:src="@drawable/lei" />


                         <TextView
                             android:id="@+id/textView1"
                             android:layout_width="80dp"
                             android:layout_height="80dp"
                             android:textColor="@color/blue"
                             android:text="@string/calc" />


                     </TableRow>
        
    </TableLayout>


</LinearLayout>

实验截图


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值