Android計(jì)算器編程實(shí)現(xiàn)-創(chuàng)新互聯(lián)

Android 計(jì)算器編程實(shí)現(xiàn)

創(chuàng)新互聯(lián)成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元新會(huì)做網(wǎng)站,已為上家服務(wù),為新會(huì)各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

第一步:定義所需的字符  string.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

  <string name="app_name">Calculator</string>

  <string name="action_settings">Settings</string>

  <string name="hello_world">Hello world!</string>

  <string name="clear">Clear</string>

  <string name="chu">/</string>

  <string name="cheng">*</string>

  <string name="tui">Back</string>

  <string name="qi">7</string>

  <string name="ba">8</string>

  <string name="jiu">9</string>

  <string name="jian">—</string>

  <string name="si">4</string>

  <string name="wu">5</string>

  <string name="liu">6</string>

  <string name="jia">+</string>

  <string name="yi">1</string>

  <string name="er">2</string>

  <string name="san">3</string>

  <string name="dian">.</string>

  <string name="ling">0</string>

  <string name="kuohao_l">)</string>

  <string name="kuohao_r">(</string>

  <string name="deng">=</string>

</resources>

第二步:編輯界面  activity.main.xml

<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"

  android:layout_width="match_parent"

  android:layout_height="match_parent" >

  <TableLayout>

    <TextView

      android:id="@+id/text1"

      android:layout_width="320dp"

      android:layout_height="60dp"

      android:textSize="40sp" />

  </TableLayout>

  <TableLayout>

    <TextView

      android:id="@+id/text2"

      android:layout_width="320dp"

      android:layout_height="60dp"

      android:textSize="40sp"/>

  </TableLayout>

  <TableRow>

    <Button

      android:id="@+id/button_clear"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/clear"

      android:textSize="20sp" />

    <Button

      android:id="@+id/button_chu"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/chu"

      android:textSize="20sp" />

    <Button

      android:id="@+id/button_cheng"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/cheng"

      android:textSize="20sp" />

    <Button

      android:id="@+id/button_tui"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/tui"

      android:textSize="20sp" />

  </TableRow>

  <TableRow>

    <Button

      android:id="@+id/button_qi"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/qi"

      android:textSize="30sp"  />

    <Button

      android:id="@+id/button_ba"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/ba"

      android:textSize="30sp" />

    <Button

      android:id="@+id/button_jiu"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/jiu"

      android:textSize="30sp"  />

    <Button

      android:id="@+id/button_jian"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/jian"

      android:textSize="30sp" />

  </TableRow>

  <TableRow>

    <Button

      android:id="@+id/button_si"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/si"

      android:textSize="30sp"  />

    <Button

      android:id="@+id/button_wu"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/wu"

      android:textSize="30sp"  />

    <Button

      android:id="@+id/button_liu"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/liu"

      android:textSize="30sp" />

    <Button

      android:id="@+id/button_jia"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/jia"

      android:textSize="30sp"  />

  </TableRow>

  <TableRow>

    <Button

      android:id="@+id/button_yi"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/yi"

      android:textSize="30sp"  />

    <Button

      android:id="@+id/button_er"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/er"

      android:textSize="30sp"  />

    <Button

      android:id="@+id/button_san"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/san"

      android:textSize="30sp"  />

    <Button

      android:id="@+id/button_dian"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/dian"

      android:textSize="30sp" />

  </TableRow>

  <TableRow>

    <Button

      android:id="@+id/button_ling"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/ling"

      android:textSize="30sp"  />

    <Button

      android:id="@+id/button_kuohao_r"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/kuohao_r"

      android:textSize="30sp" />

    <Button

      android:id="@+id/button_kuohao_l"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/kuohao_l"

      android:textSize="30sp" />

    <Button

      android:id="@+id/button_deng"

      android:layout_width="80dp"

      android:layout_height="70dp"

      android:text="@string/deng"

      android:textSize="30sp"  />

  </TableRow>

</TableLayout>

第三步:編寫處理四則運(yùn)算(包含括號(hào))的類 Yuansuan.class

package com.malakana.cal;

import android.annotation.SuppressLint;

import java.util.*;

public class Yunsuan {

Yunsuan(String str1) {

EvaluateExpression(str1);

}

@SuppressLint("UseValueOf")

public static String EvaluateExpression(String str) {

char[] a;

int i = 0;

a = str.toCharArray();

Stack<Float> OPND = new Stack<Float>();

Stack<Character> OPTR = new Stack<Character>();

OPTR.push('=');

float number = 0;

int decimalnum = 1;

boolean integer = false;

boolean decimal = false;

while (true) {

if (i == str.length())

break;

if (In(a[i]) == -1) {

number = number * 10 + (a[i] - 48);

integer = true;

if (decimal)

decimalnum = decimalnum * 10;

i++;

} else if (a[i] == '.') {

if (decimal)

return "ERROR";

decimal = integer = true;

i++;

} else if (In(a[i]) > -1 && In(a[i]) < 7) {

if (In(a[i]) == 1 && (i == 0 || In(a[i - 1]) == 4))

OPND.push(new Float(0));

if (integer) {

OPND.push(new Float(number / decimalnum));

number = 0;

decimalnum = 1;

integer = decimal = false;

}

switch (Precede(In(OPTR.peek()), In(a[i]))) {

case 2:

if (OPND.empty())

return "ERROR";

float x = OPND.pop();

if (OPND.empty())

return "ERROR";

float y = OPND.pop();

char theta = OPTR.pop();

if (In(theta) == 3 && x == 0)

return "ERROR";

OPND.push(new Float(Operate(y, theta, x)));

break;

case 1:

OPTR.pop();

i++;

break;

case 0:

OPTR.push(new Character(a[i]));

i++;

break;

case -1:

return "ERROR";

}

}

}

if (OPND.empty())

return "ERROR";

else

return ("" + OPND.peek());

}

public static int In(char t) {

int i = 0;

if (t > 47 && t < 58)

return -1;

switch (t) {

case '+':

i = 0;

break;

case '-':

i = 1;

break;

case '*':

i = 2;

break;

case '/':

i = 3;

break;

case '(':

i = 4;

break;

case ')':

i = 5;

break;

case '=':

i = 6;

break;

}

return i;

}

public static int Precede(int t1, int t2) {

int relationship[][] = { { 2, 2, 0, 0, 0, 2, 2 },

{ 2, 2, 0, 0, 0, 2, 2 }, { 2, 2, 2, 2, 0, 2, 2 },

{ 2, 2, 2, 2, 0, 2, 2 }, { 0, 0, 0, 0, 0, 1, -1 },

{ 2, 2, 2, 2, -1, 2, 2 }, { 0, 0, 0, 0, 0, -1, 1 } };

return relationship[t1][t2];

}

public static float Operate(float a, char theta, float b) {

float i = 0;

switch (theta) {

case '+':

i = a + b;

break;

case '-':

i = a - b;

break;

case '*':

i = a * b;

break;

case '/':

i = a / b;

break;

}

return i;

}

public static void main(String[] args) {

new Yunsuan(null);

}

}

第四部: 編寫主類  MianActivity.java

package com.malakana.cal;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.*;

public class MainActivity extends Activity implements OnClickListener {

String str = "";

String str1 = "";

String suanfa;

TextView text1;

TextView text2;

Button button_jia;

Button button_jian;

Button button_cheng;

Button button_chu;

Button button_clear;

Button button_tui;

Button button_deng;

Button button_kuohao_l;

Button button_kuohao_r;

Button button_dian;

Button button_yi;

Button button_er;

Button button_san;

Button button_si;

Button button_wu;

Button button_liu;

Button button_qi;

Button button_ba;

Button button_jiu;

Button button_ling;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

text1 = (TextView) findViewById(R.id.text1);

text2 = (TextView) findViewById(R.id.text2);

text1.setTextSize(20);

text2.setTextSize(20);

button_jia = (Button) findViewById(R.id.button_jia);

button_jia.setTextSize(17);

button_jian = (Button) findViewById(R.id.button_jian);

button_jian.setTextSize(17);

button_cheng = (Button) findViewById(R.id.button_cheng);

button_cheng.setTextSize(17);

button_chu = (Button) findViewById(R.id.button_chu);

button_chu.setTextSize(17);

button_dian = (Button) findViewById(R.id.button_dian);

button_dian.setTextSize(17);

button_deng = (Button) findViewById(R.id.button_deng);

button_clear = (Button) findViewById(R.id.button_clear);

button_tui = (Button) findViewById(R.id.button_tui);

button_jian = (Button) findViewById(R.id.button_jian);

button_kuohao_l = (Button) findViewById(R.id.button_kuohao_l);

button_kuohao_r = (Button) findViewById(R.id.button_kuohao_r);

button_yi = (Button) findViewById(R.id.button_yi);

button_er = (Button) findViewById(R.id.button_er);

button_san = (Button) findViewById(R.id.button_san);

button_si = (Button) findViewById(R.id.button_si);

button_wu = (Button) findViewById(R.id.button_wu);

button_liu = (Button) findViewById(R.id.button_liu);

button_qi = (Button) findViewById(R.id.button_qi);

button_ba = (Button) findViewById(R.id.button_ba);

button_jiu = (Button) findViewById(R.id.button_jiu);

button_ling = (Button) findViewById(R.id.button_ling);

button_jia.setOnClickListener(this);

button_jian.setOnClickListener(this);

button_cheng.setOnClickListener(this);

button_chu.setOnClickListener(this);

button_dian.setOnClickListener(this);

button_clear.setOnClickListener(this);

button_tui.setOnClickListener(this);

button_deng.setOnClickListener(this);

button_kuohao_l.setOnClickListener(this);

button_kuohao_r.setOnClickListener(this);

button_yi.setOnClickListener(this);

button_er.setOnClickListener(this);

button_san.setOnClickListener(this);

button_si.setOnClickListener(this);

button_wu.setOnClickListener(this);

button_liu.setOnClickListener(this);

button_qi.setOnClickListener(this);

button_ba.setOnClickListener(this);

button_jiu.setOnClickListener(this);

button_ling.setOnClickListener(this);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Button listener = (Button) v;

if (listener.getText().equals("1") || listener.getText().equals("2")

|| listener.getText().equals("3")

|| listener.getText().equals("4")

|| listener.getText().equals("5")

|| listener.getText().equals("6")

|| listener.getText().equals("7")

|| listener.getText().equals("8")

|| listener.getText().equals("9")

|| listener.getText().equals("0")

|| listener.getText().equals(".")) {

str = str + listener.getText();

} else if (listener.getText().equals("+")

|| listener.getText().equals("-")

|| listener.getText().equals("*")

|| listener.getText().equals("/")

|| listener.getText().equals("(")

|| listener.getText().equals(")")) {

if (str1.endsWith("=")) {

str1 = "";

}

str = str + listener.getText();

str1 = str1 + str;

str = "";

} else if (listener.getText().equals("=")) {

if(str1.endsWith("=")){

str1="";

}

str = str + listener.getText();

str1 = str1 + str;

      str=Yunsuan.EvaluateExpression(str1);

//double m = 0;

//m = CalcStr.calc(str1);

//str1 = str1 + "=";

//str = m + "";

}

else if (listener.getText().equals("Back")) {

if (str.length() >= 1) {

str = str.substring(0, str.length() - 1);

} else {

str1 = "";

str = "";

}

} else if (listener.getText().equals("Clear")) {

str = "";

str1 = "";

}

text2.setText(str);

text1.setText(str1);

text1.setTextSize(TRIM_MEMORY_BACKGROUND);

text2.setTextSize(TRIM_MEMORY_BACKGROUND);

}

}

最后編譯實(shí)現(xiàn) run for Android Application

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章名稱:Android計(jì)算器編程實(shí)現(xiàn)-創(chuàng)新互聯(lián)
分享路徑:http://muchs.cn/article14/cdcgde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站導(dǎo)航靜態(tài)網(wǎng)站、App設(shè)計(jì)、網(wǎng)站維護(hù)、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化