資料載入中

我是 chung

鎖住記憶

  • Chung
  • 0°C
  • 8 年又 286 天

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寫日記。


推薦閱讀

作者其他相關類別故事

DIV區塊內文字左右對齊

DIV區塊內文字左右對齊

Chung 11 年又 67 天 1.9K

最近常接到一些英文網站建置的專案....為了讓內容文字能夠左右對齊... 所以我用了以下方式 話說我...

Mysql 查詢時間區間是否包含特定日期

Mysql 查詢時間區間是否…

Chung 10 年又 265 天 2.6K

這其實只是一個簡單的問題,以前並不常用... 但這陣子寫的案子比較偏系統面,這樣的查詢問題變多了@@...

jQuery效果滑動隱藏

jQuery效果滑動隱藏

Chung 10 年又 123 天 1.8K

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


推薦閱讀

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

這是菠蘿麵包.....

這是菠蘿麵包.....

Chung 7 年又 195 天 1.6K

我記得我買的是菠蘿麵包..... 怎麼被5U吃過後,突然覺得這麵包很可憐啊~~~ 這傢伙只給我拔...

一聽到要帶他出門,馬上給了我一個笑得開懷的笑容

一聽到要帶他出門,馬上給了我…

Chung 7 年又 195 天 1.6K

一聽到要帶他出門,馬上整裝完畢( ̄∇ ̄) 堅持穿上自己選擇的鞋子,還要自己穿。 堅持背上背包。 ...

媽媽。。。。美麗

媽媽。。。。美麗

Bc Lok 7 年又 193 天 1.6K

我想記住我在兒子心目中美麗的模樣,而發出的童言贊賞,所以難得的寫下這篇文章作爲記憶。 某天上班天...


附近景點

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

  • 慈雲寺
  • 臺北工業學校紅樓
  • 草山水道系統
  • 國立臺灣大學日式宿舍-溫州街22巷4號
  • 臺大醫學院舊館
  • 齊東街日式宿舍