Loading...

Android Studio 2.3 陽春型計算機

Temperature: 0 °C

ChungChung
author_tools


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

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

判斷捲軸的位置

判斷捲軸的位置

當捲軸往下移動時,判段目前移動到哪個位置... Javascript部份 $(function(){...

.sql檔過大無法匯入phpMyAdmin

.sql檔過大無法匯入php...

修改phpMyAdmin資料夾中的config.inc.php檔。 打開後找到下列兩行或自行加入: ...

CentOS 5.2 使用 YUM 將 PHP 5.1.6 更新到 5.2.6

CentOS 5.2 使用 ...

CentOS 5. 版內建的 PHP 版本為 5..,甚至於 5. 版仍舊是 5.. 版本。 基於系...

Recommended reading

Other stories happened at this address

所以你現在是有多老?

所以你現在是有多老?

這天,U指著自己小時候的照片開心的說這是我年輕的時候。 所以你現在是有多老?

凝望

凝望

img窗外,涼風徐徐,不知名的樹木也搖曳著樹枝婆娑起舞。 U不知道看著什麼看到出神,口水都要滴出來了...

8個月了,開始進入了孕後期~

8個月了,開始進入了孕後期~...

週,個月了,開始進入了孕後期~ 小傢伙每天都賣力的扭動,深怕我們不知道他的存在似的.... 據Man...

所謂的一家人.....

所謂的一家人.....

所謂的一家人.....

​innstory 更新故事分享功能植入

​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