您的位置:首页 > 其它

计算器

2016-01-12 19:03 429 查看
package com.example.calculator;

import java.math.BigDecimal;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.View;

import android.view.View.OnLongClickListener;

import android.widget.Button;

import android.widget.EditText;

public class MainActivity extends Activity {

private String str = "";

private EditText et;

// sing符号,flag暂存

private int sign = 0, flag = 0;

private double n1 = 0.0, n2 = 0.0, r = 0.0;

private Button de;

private BigDecimal t1;

private BigDecimal t2;

private BigDecimal t;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

et = (EditText) findViewById(R.id.edit_show);

de=(Button)findViewById(R.id.delete);

de.setOnLongClickListener(new OnLongClickListener() {

@Override

public boolean onLongClick(View v) {

n1=0;

n2=0;

r=0;

str="";

et.setText(str);

return false;

}

});

}

public void doClick(View view) {

switch (view.getId()) {

case R.id.zero:

if (flag == 1) {

str = "";

str += 0;

et.setText(str);

flag = 0;

} else {

char[] c1 = str.toCharArray();

if (!(c1.length == 1 && c1[0] == '0')) {

str += 0;

et.setText(str);

}

}

break;

case R.id.one:

if (flag == 1) {

str = "";

str += 1;

et.setText(str);

flag = 0;

} else {

str += 1;

et.setText(str);

}

break;

case R.id.two:

if (flag == 1) {

str = "";

str += 2;

et.setText(str);

flag = 0;

} else {

str += 2;

et.setText(str);

}

break;

case R.id.three:

if (flag == 1) {

str = "";

str += 3;

et.setText(str);

flag = 0;

} else {

str += 3;

et.setText(str);

}

break;

case R.id.four:

if (flag == 1) {

str = "";

str += 4;

et.setText(str);

flag = 0;

} else {

str += 4;

et.setText(str);

}

break;

case R.id.five:

if (flag == 1) {

str = "";

str += 5;

et.setText(str);

flag = 0;

} else {

str += 5;

et.setText(str);

}

break;

case R.id.six:

if (flag == 1) {

str = "";

str += 6;

et.setText(str);

flag = 0;

} else {

str += 6;

et.setText(str);

}

break;

case R.id.seven:

if (flag == 1) {

str = "";

str += 7;

et.setText(str);

flag = 0;

} else {

str += 7;

et.setText(str);

}

break;

case R.id.eight:

if (flag == 1) {

str = "";

str += 8;

et.setText(str);

flag = 0;

} else {

str += 8;

et.setText(str);

}

break;

case R.id.nine:

if (flag == 1) {

str = "";

str += 9;

et.setText(str);

flag = 0;

} else {

str += 9;

et.setText(str);

}

break;

case R.id.equal:

n2 = Double.parseDouble(str);

calculater();

str = "" + r;

et.setText(str);

flag = 1;

break;

case R.id.add:

if (str != "") {

n2 = Double.parseDouble(str);

calculater();

sign = 1;

flag = 1;

}

break;

case R.id.substract:

if (str != "") {

n2 = Double.parseDouble(str);

calculater();

sign = 2;

flag = 1;

}

break;

case R.id.multiply:

if (str != "") {

n2 = Double.parseDouble(str);

calculater();

sign = 3;

flag = 1;

}

break;

case R.id.divide:

if (str != "") {

n2 = Double.parseDouble(str);

calculater();

sign = 4;

flag = 1;

}

break;

case R.id.point:

if (str == "") {

str += ".";

et.setText(str);

} else {

int x = 0;

char[] c1 = str.toCharArray();

for (int i = 0; i < c1.length; i++) {

if (c1[i] == '.') {

x++;

}

}

if (x == 0) {

str += ".";

et.setText(str);

}

}

break;

case R.id.delete:

if(str!=""&&str.length()>0){

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

et.setText(str);}

break;

case R.id.plusorminus:

char c = str.charAt(0);

if (c == '-') {

str = str.replace("-", "");

} else {

str = "-" + str;

}

et.setText(str);

break;

case R.id.radicals:

if (str != "") {

double a = Double.parseDouble(str);

str = Math.sqrt(a) + "";

et.setText(str);

}

break;

case R.id.square:

if (str != "") {

double a = Double.parseDouble(str);

str = "" + a * a;

et.setText(str);

}

break;

}

}

public double calculater() {

switch (sign) {

case 0:

r = n2;

break;

case 1:

r = n1 + n2;

break;

case 2:

r = n1 - n2;

break;

case 3:

r = n1 * n2;

break;

case 4:

t1=BigDecimal.valueOf(n1);

t2=BigDecimal.valueOf(n2);

t=t1.divide(t2,15,BigDecimal.ROUND_HALF_UP);

r =t.doubleValue();

break;

}

n1 = r;

sign = 0;

return r;

}

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

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: