Android単純計算機の最小コード実装(一般的なバグは解消されました)
7292 ワード
xmlファイルのレイアウト
MainActivity文件
package com.next.calculator1;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView textView;
private String str,num1,num2;
private double result;
private boolean addNum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView);
addNum = true;
}
public void onClick(View v){
str = (String) textView.getText();
switch (v.getId()) {
case R.id.btn_cle:
textView.setText("");
break;
case R.id.btn_del:
if(!str.equals("") && str != null){
textView.setText(str.substring(0, str.length()-1));
}
break;
case R.id.btn_equ:
if(str.contains("+")){
getResult(num1, num2, "+");
}
else if(str.contains("-")){
getResult(num1, num2, "-");
}
else if(str.contains("×")){
getResult(num1, num2, "×");
}
else if(str.contains("÷")){
getResult(num1, num2, "÷");
}
else {
return;
}
break;
case R.id.btn_add:
case R.id.btn_sub:
case R.id.btn_mul:
case R.id.btn_div:
if (str.contains("+")||str.contains("-")||str.contains("×")||str.contains("÷"))
return;
else
textView.setText(str+((Button)v).getText());
if(!addNum)
addNum = true;
break;
default:
if (addNum) {
textView.setText(str+((Button)v).getText());
}else{
textView.setText(((Button)v).getText());
addNum = true;
}
break;
}
}
private void getResult(String num1,String num2,String op) {
num1 = str.substring(0,str.indexOf(op));
num2 = str.substring(str.indexOf(op)+1);
try {
double n1 = Double.parseDouble(num1);
double n2 = Double.parseDouble(num2);
if (op.equals("+")) {
result = n1+n2;
}else if(op.equals("-")){
result = n1-n2;
}else if(op.equals("×")){
result = n1*n2;
}else if(op.equals("÷")){
result = n1/n2;
}else {
return;
}
String r = result+"";
if(r.contains(".")&&r.substring(r.length()-1).equals("0")){
r = r.substring(0,r.indexOf("."));
}
textView.setText(r);
addNum = false;
} catch (Exception e) {
return;
}
}
}