首页

android 计算器的设计与实现源码

java

2020-7-9

Android实例:模拟简单计算器的android源码。

package com.example.calcaulate;



import java.math.BigDecimal;
import java.util.regex.Pattern;

import com.example.calcaulate.R.id;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridLayout;
import android.widget.TextView;

public class MainActivity extends Activity {

	private EditText print;

	private static String fistNumber = "0";// 第一次输入的值
	private static String secondNumber = "0";// 第二次输入的值
	private static String num = "0";// 显示的结果
	private static int flg = 0;// 结果累加一次
	public Counts take = null;

	private int[] btidTake = { R.id.txtdivide, R.id.txtx, R.id.txtmin,
			R.id.txttakesum };

	private Button[] buttonTake = new Button[btidTake.length];

	private int[] btidNum = { R.id.txt0, R.id.txt1, R.id.txt2, R.id.txt3,
			R.id.txt4, R.id.txt5, R.id.txt6, R.id.txt7, R.id.txt8, R.id.txt9,
			R.id.txtspl };
	private Button[] buttons = new Button[btidNum.length];

	private int[] btcl = { R.id.chars, R.id.charx, R.id.txtb, R.id.txtv };
	private Button[] btcls = new Button[btcl.length];
	private GridLayout gly;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//gly=(GridLayout)findViewById(R.id.gly);
		print = (EditText) findViewById(R.id.print);
		print.setText("0");
		print.setEnabled(false);
		GetNumber get = new GetNumber();
		
		//给每个按钮添加监听器
		for (int i = 0; i < btidNum.length; i  ) {
			buttons[i] = (Button) findViewById(btidNum[i]);
			buttons[i].setOnClickListener(get);
		}
		Compute cm = new Compute();
		for (int i = 0; i < btidTake.length; i  ) {
			buttonTake[i] = (Button) findViewById(btidTake[i]);
			buttonTake[i].setOnClickListener(cm);
		}
		
		//等号的事件监听
		Button eq = (Button) findViewById(R.id.txteq);

		eq.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				if (flg == 0) {
					secondNumber = print.getText().toString();
					if (take == Counts.DIVIDE && secondNumber.equals("0")) {
						print.setText("0不能为除数");
					} else {
						num = take.Values(fistNumber, secondNumber);
						fistNumber = num;
						secondNumber = "0";
						print.setText("="   num);
						flg = 1;
						//gly.setBackgroundResource(R.drawable.jz);
					}
				}
			}
		});
		
		//后退  一步
		Button cleargo = (Button) findViewById(R.id.cleargo);
		cleargo.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if (num.length() > 1) {
					num = num.substring(0, num.length() - 1);
				} else {
					num = "0";
				}
				print.setText(num);
			}
		});
		
		//清空
		Button clear = (Button) findViewById(R.id.clear);
		clear.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				num = "0";
				fistNumber = secondNumber = num;
				print.setText(num);
				flg = 0;
			}
		});
		
		
		for (int i = 0; i < btcl.length; i  ) {
			btcls[i] = (Button) findViewById(btcl[i]);
			btcls[i].setOnClickListener(new OnTake());
		}
	}

	// 给 EditText赋值-------------------------------------------------------------------------------
	class GetNumber implements OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			if (flg == 1)
				num = "0";
			if (num.equals("0")) {
				print.setText("");
				num = v.getId() == R.id.txtspl ? "0" : "";
			}
			String txt = ((Button) v).getText().toString();
			boolean s = Pattern.matches("-*(\\d ).?(\\d)*", num   txt);
			num = s ? (num   txt) : num;
			//gly.setBackgroundResource(R.drawable.js);
			print.setText(num);
		}
	}

	// 根据条件计算
	class Compute implements OnClickListener {

		@Override
		public void onClick(View arg0) {

			fistNumber = print.getText().toString();
			// TODO Auto-generated method stub         -----------------------------------------------------
			switch (arg0.getId()) {
			case R.id.txttakesum:
				take = Counts.ADD;
				break;
			case R.id.txtmin:
				take = Counts.MINUS;
				break;
			case R.id.txtx:
				take = Counts.MULTIPLY;
				break;
			case R.id.txtdivide:
				take = Counts.DIVIDE;
				break;
			}
			num = "0";
			flg = 0;
			//gly.setBackgroundResource(R.drawable.js);
		}

	}

	class OnTake implements OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			switch (v.getId()) {
			case R.id.chars:
				num = "-"   num;
				break;
			case R.id.charx:
				if(!num.equals("0"))
				num = BigDecimal.valueOf(1).divide(new BigDecimal(num),12,BigDecimal.ROUND_UP).stripTrailingZeros()
						.toString();		
				break;
			case R.id.txtb:
				num = new BigDecimal(num).divide(BigDecimal.valueOf(100),12,BigDecimal.ROUND_UP).stripTrailingZeros()
						.toString();
				break;
			case R.id.txtv:
				Double numss = Math.sqrt(new BigDecimal(num).doubleValue());
				int stratindex=numss.toString().contains(".")?numss.toString().indexOf("."):0;
				num = numss.toString().length()>13?numss.toString().substring(0, 12 stratindex):numss.toString();
			}
			print.setText(num);
			flg=0;
			num = "0";

		}

	}

	@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;
	}

}


 




资源下载此资源下载价格为3D币(VIP免费),请先
资源文件列表
Calcaulate/.classpath , 475
Calcaulate/.project , 847
Calcaulate/.settings/org.eclipse.jdt.core.prefs , 177
Calcaulate/AndroidManifest.xml , 887
Calcaulate/bin/AndroidManifest.xml , 887
Calcaulate/bin/Calcaulate.apk , 282925
Calcaulate/bin/Calcaulate1.apk , 282994
Calcaulate/bin/classes/com/example/calcaulate/BuildConfig.class , 353
Calcaulate/bin/classes/com/example/calcaulate/Counts.class , 2453
Calcaulate/bin/classes/com/example/calcaulate/MainActivity$1.class , 1866
Calcaulate/bin/classes/com/example/calcaulate/MainActivity$2.class , 1241
Calcaulate/bin/classes/com/example/calcaulate/MainActivity$3.class , 1170
Calcaulate/bin/classes/com/example/calcaulate/MainActivity$Compute.class , 1459
Calcaulate/bin/classes/com/example/calcaulate/MainActivity$GetNumber.class , 1814
Calcaulate/bin/classes/com/example/calcaulate/MainActivity$OnTake.class , 2210
Calcaulate/bin/classes/com/example/calcaulate/MainActivity.class , 3944
Calcaulate/bin/classes/com/example/calcaulate/R$attr.class , 352
Calcaulate/bin/classes/com/example/calcaulate/R$dimen.class , 473
Calcaulate/bin/classes/com/example/calcaulate/R$drawable.class , 419
Calcaulate/bin/classes/com/example/calcaulate/R$id.class , 1072
Calcaulate/bin/classes/com/example/calcaulate/R$layout.class , 415
Calcaulate/bin/classes/com/example/calcaulate/R$menu.class , 400
Calcaulate/bin/classes/com/example/calcaulate/R$string.class , 484
Calcaulate/bin/classes/com/example/calcaulate/R$style.class , 443
Calcaulate/bin/classes/com/example/calcaulate/R.class , 713
Calcaulate/bin/classes.dex , 697128
Calcaulate/bin/dexedLibs/android-support-v4-3212d8b9aacb868bb3ebf47524bea5f5.jar , 232610
Calcaulate/bin/dexedLibs/android-support-v4-e5dae481e8e056a6d15c1712bbec8068.jar , 232610
Calcaulate/bin/dexedLibs/android-support-v4-ffc41d6245a35dec46fd9d634fb6ed19.jar , 232610
Calcaulate/bin/jarlist.cache , 120
Calcaulate/bin/res/crunch/drawable-hdpi/ic_launcher.png , 5964
Calcaulate/bin/res/crunch/drawable-mdpi/ic_launcher.png , 3112
Calcaulate/bin/res/crunch/drawable-xhdpi/ic_launcher.png , 9355
Calcaulate/bin/res/crunch/drawable-xxhdpi/ic_launcher.png , 17889
Calcaulate/bin/resources.ap_ , 42397
Calcaulate/gen/com/example/calcaulate/BuildConfig.java , 164
Calcaulate/gen/com/example/calcaulate/R.java , 3670
Calcaulate/ic_launcher-web.png , 51394
Calcaulate/libs/android-support-v4.jar , 621451
Calcaulate/proguard-project.txt , 781
Calcaulate/project.properties , 563
Calcaulate/res/drawable-hdpi/ic_launcher.png , 7658
Calcaulate/res/drawable-mdpi/ic_launcher.png , 3777
Calcaulate/res/drawable-xhdpi/ic_launcher.png , 12516
Calcaulate/res/drawable-xxhdpi/ic_launcher.png , 24777
Calcaulate/res/layout/activity_main.xml , 6226
Calcaulate/res/menu/main.xml , 263
Calcaulate/res/values/dimens.xml , 220
Calcaulate/res/values/strings.xml , 227
Calcaulate/res/values/styles.xml , 697
Calcaulate/res/values-sw600dp/dimens.xml , 203
Calcaulate/res/values-sw720dp-land/dimens.xml , 277
Calcaulate/res/values-v11/styles.xml , 334
Calcaulate/res/values-v14/styles.xml , 391
Calcaulate/src/com/example/calcaulate/Counts.java , 691
Calcaulate/src/com/example/calcaulate/MainActivity.java , 5544
没有账号? 忘记密码?

社交账号快速登录