2 u010516234 u010516234 于 2013.09.09 20:24 提问

为什么我开发的android计算器只能计算一次,求高手指点!

<?xml version="1.0" encoding="utf-8"?>
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
android:layout_width="296px"
android:layout_height="60px"
android:background="#ffffffff"
android:text="0.0"
android:textSize="25sp"
android:textStyle="bold"
android:textColor="#ff333333"
android:layout_x="11dp"
android:layout_y="16dp"
android:gravity="right"
android:padding="2px"/>

    <Button android:id="@+id/btn1"
        android:layout_width="60px"
        android:layout_height="60px"
        android:text="1"
        android:textSize="20sp"
        android:background="#ff00ff99"
        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="15dp"
        android:layout_y="85dp"
        android:onClick="digital_click"/>

    <Button android:id="@+id/btn2"
        android:layout_width="60px"
        android:layout_height="60px"
        android:text="2"
        android:textSize="20sp"
        android:background="#ff00ff99"
        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="85dp"
        android:layout_y="85dp"
        android:onClick="digital_click"/>

    <Button android:id="@+id/btn3"
        android:layout_width="60px"
        android:layout_height="60px"
        android:text="3"
        android:textSize="20sp"
        android:background="#ff00ff99"
        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="155dp"
        android:layout_y="85dp"
        android:onClick="digital_click" />

      <Button android:id="@+id/btnAdd"
        android:layout_width="80px"
        android:layout_height="60px"
        android:text="+"
        android:textSize="20sp"

        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="225dp"
        android:layout_y="85dp"
        android:onClick="add" />

       <Button android:id="@+id/btn4"
        android:layout_width="60px"
        android:layout_height="60px"
        android:text="4"
        android:textSize="20sp"
        android:background="#ff00ff99"
        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="15dp"
        android:layout_y="155dp"
        android:onClick="digital_click" />

        <Button android:id="@+id/btn5"
        android:layout_width="60px"
        android:layout_height="60px"
        android:text="5"
        android:textSize="20sp"
        android:background="#ff00ff99"
        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="85dp"
        android:layout_y="155dp"
        android:onClick="digital_click" />

         <Button android:id="@+id/btn6"
        android:layout_width="60px"
        android:layout_height="60px"
        android:text="6"
        android:textSize="20sp"
        android:background="#ff00ff99"
        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="155dp"
        android:layout_y="155dp"
        android:onClick="digital_click" />

       <Button android:id="@+id/btnsub"
        android:layout_width="80px"
        android:layout_height="60px"
        android:text="-"
        android:textSize="20sp"

        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="225dp"
        android:layout_y="155dp"
        android:onClick="sub" /> 

        <Button android:id="@+id/btn7"
        android:layout_width="60px"
        android:layout_height="60px"
        android:text="7"
        android:textSize="20sp"
        android:background="#ff00ff99"
        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="15dp"
        android:layout_y="225dp"
        android:onClick="digital_click" />

         <Button android:id="@+id/btn8"
        android:layout_width="60px"
        android:layout_height="60px"
        android:text="8"
        android:textSize="20sp"
        android:background="#ff00ff99"
        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="85dp"
        android:layout_y="225dp"
        android:onClick="digital_click" />

         <Button android:id="@+id/btn9"
        android:layout_width="60px"
        android:layout_height="60px"
        android:text="9"
        android:textSize="20sp"
        android:background="#ff00ff99"
        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="155dp"
        android:layout_y="225dp"
        android:onClick="digital_click" />

          <Button android:id="@+id/btnMul"
        android:layout_width="80px"
        android:layout_height="60px"
        android:text="*"
        android:textSize="20sp"

        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="225dp"
        android:layout_y="225dp"
        android:onClick="mul" />

           <Button android:id="@+id/btn0"
        android:layout_width="130px"
        android:layout_height="60px"
        android:text="0"
        android:textSize="20sp"

        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="15dp"
        android:layout_y="295dp"
        android:onClick="digital_click" />

            <Button android:id="@+id/btnpoint"
        android:layout_width="60px"
        android:layout_height="60px"
        android:text="."
        android:textSize="20sp"

        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="155dp"
        android:layout_y="295dp"
        android:onClick="point_click" />

             <Button android:id="@+id/btnDiv"
        android:layout_width="80px"
        android:layout_height="60px"
        android:text="/"
        android:textSize="20sp"

        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="225dp"
        android:layout_y="295dp"
        android:onClick="div" />

              <Button android:id="@+id/btndel"
        android:layout_width="60px"
        android:layout_height="60px"
        android:text="DE&gt;"
        android:textSize="20sp"
        android:textColor="#ffff3333"
        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="15dp"
        android:layout_y="365dp"
        android:onClick="del" />

               <Button android:id="@+id/btnequ"
        android:layout_width="220px"
        android:layout_height="60px"
        android:text="="
        android:textSize="20sp"

        android:textStyle="bold"
        android:gravity="center"
        android:layout_x="85dp"
        android:layout_y="365dp"
        android:onClick="equ" />

package com.example.jishuanqi;

import java.text.NumberFormat;
import java.util.Formatter;

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

public class MainActivity extends Activity {
//第一个输入的数据
double a=0;
//记录第一次输入的符号
char b='+';
StringBuffer c=new StringBuffer();//得到textview中的数据
boolean d=false;//第一个数据是否是小数点
TextView txtResult;//输出结果

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txtResult=(TextView)findViewById(R.id.txtResult);
}
/*
 * 对数据进行初始化
 * (non-Javadoc)
 * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)
 */
public void init(){
    c.delete(0, c.length());//设置当前textView中的值为0
    d=false;
}
//将输入的数据转换成double类型
public double stringToDouble(){
    if(c.length()==0){
        //如果没有输入的数据
        return 0;
    }
    double result=Double.parseDouble(c.toString());
    return result;
}

//进行计算处理
public double calcu(){
double result=0;
switch(b){
case '+':
result=a+stringToDouble();
break;
case '-':
result=a-stringToDouble();
break;
case '*':
result=a*stringToDouble();
break;
case '/':
result=a/stringToDouble();
break;
}
//对小数点后的数据进行格式化
NumberFormat format=NumberFormat.getInstance();
format.setMaximumFractionDigits(2);
result=Double.parseDouble(format.format(result));
return result;
}
//显示数据
public void display(){
txtResult.setText(c.toString());
}
//处理数据按钮的点击
public void digital_click(View view){
Button btnDigital=(Button) view;
char text=btnDigital.getText().charAt(0);
c.append(text);
display();
}
//处理 加法
public void add(View view){
double result=calcu();
txtResult.setText(String.valueOf(result));
a=result;
b='+';
init();
}
//处理减法
public void sub(View view){
double result=calcu();
txtResult.setText(String.valueOf(result));
a=result;
b='-';
init();
}
//处理乘法
public void mul(View view){
double result=calcu();
txtResult.setText(String.valueOf(result));
a=result;
b='*';
init();
}
//处理除法
public void div(View view){
double result=calcu();
txtResult.setText(String.valueOf(result));
a=result;
b='/';
init();
}
//处理等于
public void equ(View view){
double result=calcu();
txtResult.setText(String.valueOf(result));
a=result;
b='=';
init();
}
//处理小数点
public void point_click(View view){
if(d){
//当一个数据为小数点时程序返回
return;
}
if(c.length()==0){
//当没有输入的数据时返回
return;
}
Button btnPoint=(Button) view;
char text=btnPoint.getText().charAt(0);
c.append(text);
d=true;
display();
}
//处理删除数据
public void del(View view){
if(c.length()>=1){
c.delete(c.length()-1, c.length());
}
if(c.length()==0){
init();
display();
}
txtResult.setText(c);
}

}

1个回答

weixin_28788471
weixin_28788471   2015.06.10 07:45

什么意思,算完一次就崩溃了吗,还是??

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!