小小計算器

《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);

}


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章