Loading...

Android Studio 2.3 陽春型計算機

Temperature: 0 °C

ChungChung


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

按照工具書上寫的,完成了按一下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

https://innstory.com/story-Android_Studio_23_陽春型計算機-1177

Prev
 就是要這樣挨著

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

Nearby Attractions

台北市內湖區江南街71巷75弄-Nearby Attractions

  • 臺北機廠 Go
  • 天母白屋(美軍宿舍) Go
  • 齊東街日式宿舍 Go
  • 臺北市政府舊廈(原建成小學校) Go
  • 前美國大使官邸 Go
  • 內湖庄役場會議室 Go

About the Author

Chung

我是chung
網路工作者
主業是網站系統開發建置
副業是做夢,寫故事
作品請參考/teme.biz
做夢請參考/innstory.com
聯絡/chung.teme@gmail.com

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

Visitor message

Leave some footprints to prove that you visited me

Recommended reading

Author's other related stories

CSS Radio Button

CSS Radio Button

寫系統的時候三不五時總會用到Radio Button 和 Checkboxes 目前就...

行事曆功能導入

行事曆功能導入

cc Innstory有行事曆囉! 我試著把Innstory當作是我的筆記本,將生活發...

研究著vps的設定...

研究著vps的設定...

現在在研究著vps的設定... 上次發生怪客入侵事件後...原本已經把所有系統都重新檢...

Recommended reading

Other stories happened at this address

jQuery效果滑動隱藏

jQuery效果滑動隱藏

因為需要所以紀錄下來,主要是要透過點選按鈕將字串隱藏或顯示出來... 雖說可以直接用...

未完成的金頓國際大飯店...

未完成的金頓國際大飯店...

kingdom kk 說是未完成...應該說這個專案並未結案... 雖是未結案...但...

可不可以將煩惱都裝進鯨魚的大肚量?

可不可以將煩惱都裝進鯨魚的大肚量?

s 不知道從甚麼時候開始,煩惱竟然跟年紀成正比。 在想~ 可不可以將煩惱都裝進鯨魚的大...

CSS3 box-shadow

CSS3 box-shadow

便利貼~俗稱小黃(對我來說),依據wiki的說法~是M公司的工程師史賓塞·席佛經過年後...

5G抬頭練習

5G抬頭練習

G在練習著抬頭,U隨侍一旁( ̄∇ ̄) 還有U說他也要練習抬頭。 我說親愛的,你好不好先...

有興趣寫故事的人可以自行加入開始安裝你自己的故事~

有興趣寫故事的人可以自行加入開始安裝你自己的故事~

innstory 每個人,都有自己的故事。 故事,都值得被紀錄下來。 innstory...

Please select an option

error

Hi, thank you for your participation, but you cannot vote repeatedly~

Join innstory now and start recording your story.

"Innstory" is a place to store stories. We are committed to becoming a warm platform. Deepening the bonds between people is our direction.
We are convinced that the blockchain between people is not just a cold calculation. Join us now.

Wrong format