Loading...

Android Studio 2.3 陽春型計算機進階版

Temperature: 0 °C

ChungChung
author_tools


Android Studio 2.3 陽春型計算機進階版
將之前的陽春型計算機用了不怎麼聰明的方式改善了幾個地方。

首先,將數字的宣告由int變成了double,這是為了讓運算答案能夠顯示小數點。

加上了含稅跟未稅的按鈕。

MainActivity.java部分

package com.innstory.calculator;



import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.text.NumberFormat;
import android.widget.EditText;



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

//定義變數
EditText 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,bt_dot,bt_Tax,bt_noTax;//按鈕
double previous = 0;//儲存上1筆資料
double counter = 0; //目前的值
double counter_ = 0;//原運算值
String Operation;//運算符號
String dot;//符號


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ans_list = (EditText) findViewById(R.id.ans_list);
ans_list_s = (EditText) 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);
bt_dot = (Button) findViewById(R.id.button_dot);
bt_Tax = (Button) findViewById(R.id.button_Tax);
bt_noTax = (Button) findViewById(R.id.button_noTax);

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_dot.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);
bt_Tax.setOnClickListener(this);
bt_noTax.setOnClickListener(this);

}



@Override
public void onClick(View v) {

NumberFormat nf = NumberFormat.getInstance(); // 數字格式
nf.setMaximumFractionDigits(4); // 限制小數第四位

if (v.getId() == R.id.button1){

if (dot != null){

if (dot == "1"){
counter = counter + 0.01;
}else {
counter = counter / 10 + 1 * 0.1;
}
dot = "1";
}else{
counter = counter * 10 + 1; // x 10 原因為了進位
}

ans_list.setText(ans_list.getText() + "1");
ans_list_s.setText("" + counter);
} else if (v.getId() == R.id.button2){

if (dot != null){
if (dot == "1"){
counter = counter + 0.02;
}else {
counter = counter / 10 + 2 * 0.1;
}
dot = "1";
}else{
counter = counter * 10 + 2;
}

ans_list.setText(ans_list.getText() + "2");
ans_list_s.setText("" + counter);
} else if (v.getId() == R.id.button3){

if (dot != null){
if (dot == "1"){
counter = counter + 0.03;
}else {
counter = counter / 10 + 3 * 0.1;
}
dot = "1";
}else{
counter = counter * 10 + 3;
}
ans_list.setText(ans_list.getText() + "3");
ans_list_s.setText("" + counter);
} else if (v.getId() == R.id.button4){

if (dot != null){
if (dot == "1"){
counter = counter + 0.04;
}else {
counter = counter / 10 + 4 * 0.1;
}
dot = "1";
}else{
counter = counter * 10 + 4;
}
ans_list.setText(ans_list.getText() + "4");
ans_list_s.setText("" + counter);
} else if (v.getId() == R.id.button5){

if (dot != null){
if (dot == "1"){
counter = counter + 0.05;
}else {
counter = counter / 10 + 5 * 0.1;
}
dot = "1";
}else{
counter = counter * 10 + 5;
}
ans_list.setText(ans_list.getText() + "5");
ans_list_s.setText("" + counter);
} else if (v.getId() == R.id.button6){

if (dot != null){
if (dot == "1"){
counter = counter + 0.06;
}else {
counter = counter / 10 + 6 * 0.1;
}
dot = "1";
}else{
counter = counter * 10 + 6;
}
ans_list.setText(ans_list.getText() + "6");
ans_list_s.setText("" + counter);
} else if (v.getId() == R.id.button7){

if (dot != null){
if (dot == "1"){
counter = counter + 0.07;
}else {
counter = counter / 10 + 7 * 0.1;
}
dot = "1";
}else{
counter = counter * 10 + 7;
}
ans_list.setText(ans_list.getText() + "7");
ans_list_s.setText("" + counter);
} else if (v.getId() == R.id.button8){

if (dot != null){
if (dot == "1"){
counter = counter + 0.08;
}else {
counter = counter / 10 + 8 * 0.1;
}
dot = "1";
}else{
counter = counter * 10 + 8;
}
ans_list.setText(ans_list.getText() + "8");
ans_list_s.setText("" + counter);
} else if (v.getId() == R.id.button9){

if (dot != null){
if (dot == "1"){
counter = counter + 0.09;
}else {
counter = counter / 10 + 9 * 0.1;
}
dot = "1";
}else{
counter = counter * 10 + 9;
}
ans_list.setText(ans_list.getText() + "9");
ans_list_s.setText("" + counter);
} else if (v.getId() == R.id.button0){

if (dot != null){
if (dot == "1"){
counter = counter + 0.00;
}else {
counter = counter / 10 + 0 * 0.1;
}
dot = "1";
}else{
counter = counter * 10 + 0;
}
ans_list.setText(ans_list.getText() + "0");
ans_list_s.setText("" + counter);
} else if (v.getId() == R.id.button_dot){
counter = counter * 10;
dot = "yes";
ans_list.setText(ans_list.getText() + ".");

} else if (v.getId() == R.id.button_ac){
counter = 0;
ans_list.setText(String.valueOf(""));
ans_list_s.setText(String.valueOf(""));
dot = null;
}


if (v.getId() == R.id.button_Tax){
ans_list.setText(nf.format(counter * 1.05));//含稅
previous = 0;
}

if (v.getId() == R.id.button_noTax){
ans_list.setText(nf.format(counter * 1.05 / 1.05));//未稅
previous = 0;
}



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

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

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

else if (v.getId() == R.id.button_except){
previous = counter;
counter = 0;
dot = null;
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;
Operation = "";
} else if (Operation.equals("-")) {
counter = previous - counter;
counter_ = previous - counter;
ans_list.setText(String.valueOf(counter));
ans_list_s.setText("運算子 = " + previous + " - " + counter_);
previous = 0;
Operation = "";
} else if (Operation.equals("×")) {
counter = previous * counter;
counter_ = counter / previous;
ans_list.setText(String.valueOf(counter));
ans_list_s.setText("運算子 = " + previous + " × " + counter_);
previous = 0;
Operation = "";
} else if (Operation.equals("÷")) {
if (counter == 0) {
ans_list.setText("被除數除數不能為0");
previous = 0;
} else {
counter = previous / counter;
counter_ = previous / counter;
ans_list.setText(nf.format(counter));
ans_list_s.setText("運算子 = " + previous + " ÷ " + counter_);
previous = 0;
}
Operation = "";
}


}


}

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

說了是不聰明的方式,主要是在顯示小數點的部分。

其實想做到的是可以自動判別小數點後面有幾個數字。

但目前仍想不出用甚麼方式,索性就用了不聰明的方式做判斷。

而且這個判斷目前也只能讓輸入小數點後2位數字,多了就會出問題了(╯з╰)

總之,研究中。

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

https://innstory.com/story-Android_Studio_23_陽春型計算機進階版-1193
寫程式筆記

Prev
 淡紅色小藥丸

Next
今早我從睡夢中驚醒 

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

Google map 功能導入

Google map 功能導...

blogmap 寫故事還是得有地圖才好厚! 前幾天,sam同我說有一個客戶有Google map的需...

jQuery效果滑動隱藏

jQuery效果滑動隱藏

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

PHP如何將陣列組合接成字串

PHP如何將陣列組合接成字串...

$arr = array(&#;hello&#;,&#;word&#;); echo implode...

Recommended reading

Other stories happened at this address

10個月的5U,吃個飯像大爺啊~( ̄∇ ̄)

10個月的5U,吃個飯像大爺...

image U十個月了。 充滿好奇心的年紀,雖然會認人了,但試驗了幾次之後似乎不怎麼怕生。 不挑食,...

兒子,吃香蕉要剝皮好嗎⊙_⊙

兒子,吃香蕉要剝皮好嗎⊙_⊙...

兒子,吃香蕉要剝皮好嗎⊙⊙

不可思議的佩佩豬

不可思議的佩佩豬

pappy 因為U的關係,我認識了佩佩豬,而他可能是目前為止我認為最不可思議的卡通~ 每個角色的家、...

街角的早餐店

街角的早餐店

習慣拎上一杯便利商店的冰咖啡,來到街角這間早餐店。 早餐店沒有名字,賣的是中式早餐。 喜歡上他的原因...

鄰居種植的鬼椒,據說很辣,歡迎我們採用,但我實在沒有勇氣嚐試@@

鄰居種植的鬼椒,據說很辣,歡...

鄰居種植的鬼椒,據說很辣,歡迎我們採用,但我實在沒有勇氣嚐試@@

新舊交替,使用phpmyadm出現1064 error in CREATE TABLE … TYPEMYISAM錯誤

新舊交替,使用phpmyad...

sql 系統移機的過程中,最重要的環節....我想...莫過於是系統的環境了....。 這次在協助移...

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