Android計算器編程實現-創新互聯

Android 計算器編程實現

創新互聯成立于2013年,是專業互聯網技術服務公司,擁有項目做網站、成都做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元新會做網站,已為上家服務,為新會各地企業和個人服務,聯系電話: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>

第三步:編寫處理四則運算(包含括號)的類 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);

}

}

最后編譯實現 run for Android Application

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

文章名稱:Android計算器編程實現-創新互聯
分享路徑:http://m.kartarina.com/article14/cdcgde.html

成都網站建設公司_創新互聯,為您提供企業網站制作網站導航靜態網站App設計網站維護做網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都seo排名網站優化
主站蜘蛛池模板: 日韩人妻系列无码专区| 一夲道无码人妻精品一区二区| 国产亚洲精久久久久久无码AV| 嫩草影院无码av| 亚洲AV无码一区二区二三区软件| 亚洲AV无码国产精品色| 亚洲AV永久无码精品一区二区国产| a级毛片无码免费真人久久| 亚洲AV成人无码天堂| 国产精品无码无卡无需播放器| 日韩国产精品无码一区二区三区| 日产无码1区2区在线观看| 亚洲AV成人无码天堂| 中文精品无码中文字幕无码专区| 国产精品亚洲专区无码WEB| 欧洲成人午夜精品无码区久久| 精品久久久无码人妻字幂| 久久Av无码精品人妻系列| 日韩a级无码免费视频| 用舌头去添高潮无码视频| 亚洲最大中文字幕无码网站| 国产爆乳无码视频在线观看| 人妻无码久久精品| 国产成人无码AV在线播放无广告 | 亚洲AV无码成人精品区在线观看| 一本一道VS无码中文字幕| 日韩人妻无码中文字幕视频| 成人无码网WWW在线观看| 亚洲一级Av无码毛片久久精品| 熟妇人妻无码中文字幕老熟妇| 人妻丰满熟妇无码区免费 | 日韩av无码中文无码电影| 无码色偷偷亚洲国内自拍| 色综合无码AV网站| 亚洲精品无码中文久久字幕| 亚洲日韩看片无码电影| 无码人妻丰满熟妇啪啪网站| 亚洲成av人片在线观看无码不卡| 国产成人无码一二三区视频| 自慰无码一区二区三区| 亚洲AV无码第一区二区三区|