《main.xml》

<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/input"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/quitAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="消除"
android:layout_weight="2"

/>
<Button
android:id="@+id/quitOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.19"
android:text="清除"/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/qi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="7"
/>
<Button
android:id="@+id/ba"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="8"
/>
<Button
android:id="@+id/jiu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="9"/>
<Button
android:id="@+id/chu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="/"
/>
</TableRow>

<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/si"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="4"
/>
<Button
android:id="@+id/wu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="5"
/>
<Button
android:id="@+id/liu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="6"/>
<Button
android:id="@+id/cheng"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="*"
/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/y1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1"
/>
<Button
android:id="@+id/er"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="2"
/>
<Button
android:id="@+id/san"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="3"/>
<Button
android:id="@+id/jian"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="-"
/>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/dian"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="."
/>
<Button
android:id="@+id/ling"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="0"
/>
<Button
android:id="@+id/equals"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="="/>
<Button
android:id="@+id/jia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="+"
/>
</TableRow>

</LinearLayout>

<MainActivity.java>

importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.app.Activity;
publicclassMainActivityextendsActivity{
privateButton[]btnCommand=newButton[5];//保存符号
privateButton[]btnNum=newButton[11];//保存数字
privateEditTextedit=null;//显示区域
privateStringlastCommand=null;//用于保存运算符
privatebooleanclearFlag;//用于判断是否清空显示区域的值,true需要,false不需要
privatebooleanfirstFlag;//用于判断是否是首次输入,true首次,false不是首次
privatedoubleresult;//计算结果
privateButtonquitAll,quitOne;
publicMainActivity(){
//初始化各项值
result=0;//x的值
firstFlag=true;//是首次运算
clearFlag=false;//不需要清空
lastCommand="=";//运算符
}
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取数字
btnNum[0]=(Button)findViewById(R.id.ling);
btnNum[1]=(Button)findViewById(R.id.y1);
btnNum[2]=(Button)findViewById(R.id.er);
btnNum[3]=(Button)findViewById(R.id.san);
btnNum[4]=(Button)findViewById(R.id.si);
btnNum[5]=(Button)findViewById(R.id.wu);
btnNum[6]=(Button)findViewById(R.id.liu);
btnNum[7]=(Button)findViewById(R.id.qi);
btnNum[8]=(Button)findViewById(R.id.ba);
btnNum[9]=(Button)findViewById(R.id.jiu);
btnNum[10]=(Button)findViewById(R.id.dian);
//获取运算符
btnCommand[0]=(Button)findViewById(R.id.jia);
btnCommand[1]=(Button)findViewById(R.id.jian);
btnCommand[2]=(Button)findViewById(R.id.cheng);
btnCommand[3]=(Button)findViewById(R.id.chu);
btnCommand[4]=(Button)findViewById(R.id.equals);

//初始化显示结果区域
edit=(EditText)findViewById(R.id.input);
edit.setText("");
//实例化监听器对象
NumberActionna=newNumberAction();
CommandActionca=newCommandAction();
for(Buttonbc:btnCommand){
bc.setOnClickListener(ca);
}
for(Buttonbc:btnNum){
bc.setOnClickListener(na);
}
//clear按钮的动作
quitAll=(Button)findViewById(R.id.quitAll);
quitAll.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewview){
edit.setText("");
//初始化各项值
result=0;//x的值
firstFlag=true;//是首次运算
clearFlag=false;//不需要清空
lastCommand="=";//运算符
}
});
quitOne=(Button)findViewById(R.id.quitOne);
quitOne.setOnClickListener(newOnClickListener(){

@Override
publicvoidonClick(Viewv){
StringeditOne=edit.getText().toString();
StringeditTwo=editOne.substring(0,editOne.length()-1);
edit.setText(editTwo);

}
});


}
privateclassNumberActionimplementsOnClickListener{

@Override
publicvoidonClick(Viewview){
Buttonbtn=(Button)view;
StringbtnValue=(String)btn.getText();
if(firstFlag){
//一上就".",就什么也不做
if(btnValue.equals(".")){
return;
}

//如果是"0.0"的话,就清空
if(edit.getText().toString().equals("0.0")){
edit.setText("");
}
firstFlag=false;//改变是否首次输入的标记值


}else{
StringeditTextStr=edit.getText().toString();
//判断显示区域的值里面是否已经有".",如果有,输入的又是".",就什么都不做
if(editTextStr.indexOf(".")!=-1&&btnValue.equals(".")){
return;
}

//判断显示区域的值里面只有"-",输入的又是".",就什么都不做
if(editTextStr.equals("-")&&btnValue.equals(".")){
return;
}

//判断显示区域的值如果是"0",输入的不是".",就什么也不做
if(editTextStr.equals("0")&&!btnValue.equals(".")){
return;
}

}
//如果我点击了运算符以后,再输入数字的话,就要清空显示区域的值
if(clearFlag){
edit.setText("");
clearFlag=false;//还原初始值,不需要清空
}
edit.setText(edit.getText().toString()+btnValue);//设置显示区域的值
}
}

privateclassCommandActionimplementsOnClickListener{

@Override
publicvoidonClick(Viewview){
Buttonbtn=(Button)view;
StringinputCommand=(String)btn.getText();
if(firstFlag){//首次输入"-"的情况
if(inputCommand.equals("-")){
edit.setText("-");//显示区域的内容设置为"-"
firstFlag=false;//改变首次输入的标记
}
}else{
if(!clearFlag){//如果flag=false不需要清空显示区的值,就调用方法计算
calculate(Double.parseDouble(edit.getText().toString()));//保存显示区域的值,并计算
}
//保存你点击的运算符
lastCommand=inputCommand;
clearFlag=true;//因为我这里已经输入过运算符,
}
}

}
//计算用的方法
privatevoidcalculate(doublex){
if(lastCommand.equals("+")){
result+=x;
}elseif(lastCommand.equals("-")){
result-=x;
}elseif(lastCommand.equals("*")){
result*=x;
}elseif(lastCommand.equals("/")){
result/=x;
}elseif(lastCommand.equals("=")){
result=x;
}
edit.setText(""+result);

}


}