資料載入中

我是 chung

鎖住記憶

  • Chung
  • 0°C
  • 9 年又 175 天

Android Studio 2.3 陽春型計算機


AndroidStudio23陽春型計算機
原本這次的學習課題是,與使用者互動之「按一下」事件處理。

我按照工具書上寫的,完成了按一下Button 會達到累加數字的效果。

但是沒耐心的我,總覺得這樣的學習方式好枯燥無味。

因此,為了讓學習變有趣,既然是「按一下」事件處理,那這次索性訂了個專題,寫個計算機吧。

MainActivity.java部分
package com.innstory.computer;


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;




public class MainActivity extends AppCompatActivity
implements View.OnClickListener, View.OnLongClickListener{

//定義變數
TextView ans_list_s,ans_list;//輸出點擊按鈕及輸出結果
Button bt1,bt2,bt3,bt4,bt5,bt6,bt7,bt8,bt9,bt0,bt_add,bt_less,bt_Multiply
,bt_except,bt_ac,bt_answer;//按鈕
int previous = 0;//儲存上1筆資料
int counter = 0; //目前的值
int counter_ = 0;//原運算值
String Operation;//運算符號


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ans_list = (TextView) findViewById(R.id.ans_list);
ans_list_s = (TextView) findViewById(R.id.ans_list_s);
bt1 = (Button) findViewById(R.id.button1);
bt2 = (Button) findViewById(R.id.button2);
bt3 = (Button) findViewById(R.id.button3);
bt4 = (Button) findViewById(R.id.button4);
bt5 = (Button) findViewById(R.id.button5);
bt6 = (Button) findViewById(R.id.button6);
bt7 = (Button) findViewById(R.id.button7);
bt8 = (Button) findViewById(R.id.button8);
bt9 = (Button) findViewById(R.id.button9);
bt0 = (Button) findViewById(R.id.button0);
bt_add = (Button) findViewById(R.id.button_add);
bt_less = (Button) findViewById(R.id.button_less);
bt_Multiply = (Button) findViewById(R.id.button_Multiply);
bt_except = (Button) findViewById(R.id.button_except);
bt_ac = (Button) findViewById(R.id.button_ac);
bt_answer = (Button) findViewById(R.id.button_answer);

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);
bt0.setOnClickListener(this);
bt_add.setOnClickListener(this);
bt_less.setOnClickListener(this);
bt_Multiply.setOnClickListener(this);
bt_except.setOnClickListener(this);
bt_ac.setOnClickListener(this);
bt_answer.setOnClickListener(this);

}


@Override
public void onClick(View v) {
if (v.getId() == R.id.button1){
counter = counter * 10 + 1; // x 10 原因為了進位
} else if (v.getId() == R.id.button2){
counter = counter * 10 + 2;
} else if (v.getId() == R.id.button3){
counter = counter * 10 + 3;
} else if (v.getId() == R.id.button4){
counter = counter * 10 + 4;
} else if (v.getId() == R.id.button5){
counter = counter * 10 + 5;
} else if (v.getId() == R.id.button6){
counter = counter * 10 + 6;
} else if (v.getId() == R.id.button7){
counter = counter * 10 + 7;
} else if (v.getId() == R.id.button8){
counter = counter * 10 + 8;
} else if (v.getId() == R.id.button9){
counter = counter * 10 + 9;
} else if (v.getId() == R.id.button0){
counter = counter * 10 + 0;
} else if (v.getId() == R.id.button_ac){
counter = 0;
ans_list.setText(String.valueOf(counter));
ans_list_s.setText(String.valueOf(counter));
}

ans_list.setText(String.valueOf(counter));

//符號
if (v.getId() == R.id.button_add){
previous = counter;
counter = 0;
Operation = bt_add.getText().toString();
ans_list.setText(String.valueOf(Operation));
}

else if (v.getId() == R.id.button_less){
previous = counter;
counter = 0;
Operation = bt_less.getText().toString();
ans_list.setText(String.valueOf(Operation));
}

else if (v.getId() == R.id.button_Multiply){
previous = counter;
counter = 0;
Operation = bt_Multiply.getText().toString();
ans_list.setText(String.valueOf(Operation));
}

else if (v.getId() == R.id.button_except){
previous = counter;
counter = 0;
Operation = bt_except.getText().toString();
ans_list.setText(String.valueOf(Operation));
}


//運算
if (v.getId() == R.id.button_answer){
if(Operation.equals("+")){
counter = previous + counter;
counter_ = counter - previous;
ans_list.setText(String.valueOf(counter));
ans_list_s.setText("運算子 = " + previous + " + " + counter_);
previous = 0;
}

else if(Operation.equals("-")){
counter = previous - counter;
counter_ = previous - counter;
ans_list.setText(String.valueOf(counter));
ans_list_s.setText("運算子 = " + previous + " - " + counter_);
previous = 0;
}

else if(Operation.equals("×")){
counter = previous * counter;
counter_ = counter / previous;
ans_list.setText(String.valueOf(counter));
ans_list_s.setText("運算子 = " + previous + " × " + counter_);
previous = 0;
}

else if(Operation.equals("÷")){
if (counter == 0) {
ans_list.setText("被除數除數不能為0");
previous = 0;
}else {
counter = previous / counter;
counter_ = previous / counter;
ans_list.setText(String.valueOf(counter));
ans_list_s.setText("運算子 = " + previous + " ÷ " + counter_);
previous = 0;
}
}
}


}

@Override
public boolean onLongClick(View v) {
return false;
}
}

當然,這只是一個極度陽春的計算機功能。

有一些bug可能也還需要研究怎麼處理,UI部分也要研究如何讓他變漂亮。

嗯,其實還可以多加個「未稅」「含稅」的Button。

但撇開這些缺點不談,他的確是個計算機了。

台北市內湖區江南街71巷75弄 Go

  • 按一下事件處理的學習課題
  • 計算機功能的設計與實現
  • 如何讓學習變得有趣
  • UI設計提升計算機美觀
  • 處理計算機中的bug問題
https://innstory.com/story-AndroidStudio23陽春型計算機-1177

上一篇
 就是要這樣挨著

下一篇
自從當了爸購物時看到6都會有莫名的感(衝)動 

發表留言

作者簡介

我是chung,網路工作者

主業是網站系統開發建置
副業是做夢、紀錄故事
作品請參考:teme.biz
做夢請參考:innstory.com
聯絡:chung.teme@gmail.com

有人用筆寫日記,有人用歲月寫日記,有人用照片寫日記,而我,用innstory寫日記。


推薦閱讀

作者其他相關類別故事

動態留言功能調整

動態留言功能調整

Chung 11 年又 25 天 2.1K

最近改進了朋友動態的發文方式.... 一開始在功能方面加上了googlemap標計,這樣就能夠顯...

營火蟲幼蟲飼養觀察日記

營火蟲幼蟲飼養觀察日記

Chung 2025-12-14 上午 11 點 583

跟往常一樣,5U三不五時星期五下課時就會從學校帶一些「生物」回來,說是學校的課程觀察。 上次是帶蓋...

暑期校外教學,紅樓

暑期校外教學,紅樓

Chung 2026-07-24 下午 5 點 571

5U一早就背上他的背包,開心的到學校集合。 因為這天,是暑期課後班的校外教學。地點是西門的紅樓。 ...


推薦閱讀

這個地址也發生了其他故事

笑成這樣叫我怎能不愛妳

笑成這樣叫我怎能不愛妳

Chung 7 年又 195 天 1.9K

笑成這樣叫我怎能不愛妳~ 5G,3個多月,還不會翻身但是會抬頭,只是角度還需要多練習。 喜歡坐著...

最近愛上吃雞腿就連喝奶時也必須要一起當配菜

最近愛上吃雞腿就連喝奶時也必…

Chung 7 年又 191 天 2K

最近愛上吃雞腿,就連喝奶時也必須要一起當配菜~

四個月又2天,翻身

四個月又2天,翻身

Chung 7 年又 180 天 2.3K

瞧她一臉有點小驚訝的表情卻又按耐不住喜悅貌。 四個月又2天,自己翻身成功,似乎好像不大相信自己成...


附近景點

這個地址-台北市內湖區江南街71巷75弄-附近還有甚麼?

  • 原臺灣軍司令官官邸(孫立人將軍官邸)
  • 國定古蹟嚴家淦故居
  • 內湖清代採石場
  • 黃氏節孝坊
  • 臺大法學院
  • 國立臺灣大學日式宿舍-福州街20、22、26號