我的简单计算器程序不起作用

时间:2013-08-12 12:16:23

标签: java eclipse calculator

我曾尝试用Java编写代码(我正在使用Eclipse),但每次都会得到相同的错误而且我不知道如何纠正它(我是java的新手)。当我按下“=”按钮,或“sin”,“cos”等(在屏幕上显示结果的任何其他按钮)时,程序就会停止运行。

代码有什么问题?

package com.example.proiectcalculator;

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 Calculator extends Activity {

//public EditText display;  
TextView screen;
//    int a, result;
int c;
Button b;
int sum1;// sum2, sum;
String y;
int sw=0;

public int getSum1(int sum1) {
    return sum1;
}

 /*   public int getSum2(int sum2) {
    return sum2;
}*/

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_calculator);  
    sum1=0; 

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.calculator, menu);
    return true;
}

public void buttonEventHandler(View v) {
    screen=(TextView)findViewById(R.id.textView1);
    b=(Button)findViewById(R.id.button12);
    switch(v.getId()) {

    case R.id.button12 :
        screen.setText(screen.getText() + "1");
        if(sw==0)
        {
            sw=1;
            c = 1;
        }
        else
            c = c*10 + 1; 
        break;

    case R.id.button11 : 
        screen.setText(screen.getText() + "2");
        if(sw==0)
        {
            c = 2;
            sw=1;
        }
        else
            c = c*10 + 2;
        break;

    case R.id.button10 : 
        screen.setText(screen.getText() + "3");
        if(sw==0)
        {
            sw=1;
            c = 3;
        }
        else
            c = c*10 + 3; 
        break;

    case R.id.button9 : 
        screen.setText(screen.getText() + "4");
        if(sw==0)
        {
            sw=1;
            c = 4;
        }
        else
            c = c*10 + 4; 
        break;

    case R.id.button8 : 
        screen.setText(screen.getText() + "5");
        if(sw==0)
        {
            sw=1;
            c = 5;
        }
        else
            c = c*10 + 5; 
        break;

    case R.id.button7 : 
        screen.setText(screen.getText() + "6");
        if(sw==0)
        {
            sw=1;
            c = 6;
        }
        else
            c = c*10 + 6; 
        break;

    case R.id.button6 : 
        screen.setText(screen.getText() + "7");
        if(sw==0)
        {
            sw=1;
            c = 7;
        }
        else
            c = c*10 + 7; 
        break;

    case R.id.button5 : 
        screen.setText(screen.getText() + "8");
        if(sw==0)
        {
            sw=1;
            c = 8;
        }
        else
            c = c*10 + 8; 
        break;

    case R.id.button4 : 
        screen.setText(screen.getText() + "9");
        if(sw==0)
        {
            sw=1;
            c = 9;
        }
        else
            c = c*10 + 9; 
        break;

    case R.id.button13 : 
        screen.setText(screen.getText() + "0");
        if(sw==0)
        {
            sw = 1;
            c = 0;
        }
        else
            c = c*10; 
        break;

   /*    case R.id.button1 :
        if( c!=0 )
            screen.setText(screen.getText() - c);
        break;*/

    case R.id.button2 :
        screen.setText("");
        c = 0;
        break;

    case R.id.button16 : 
        screen.setText(screen.getText() + "+"); 
        y="+";
        //salvam numarul de dinainte de un semn
        sum1=c;
        sw=0;
        c=0;
        break;

    case R.id.button17 : 
        screen.setText(screen.getText() + "-"); 
        y="-";
        sum1=c;
        sw=0;
        c=0;
        break;

    case R.id.button18 : 
        screen.setText(screen.getText() + "*"); 
        y="*";
        sum1=c;
        sw=0;
        c=0;
        break;

    case R.id.button19 : 
        screen.setText(screen.getText() + "/"); 
        y="/";
        sum1=c;
        sw=0;
        c=0;
        break;

    case R.id.button15 :
        if( y=="+" )
            screen.setText(sum1 + c);
        else
            if( y=="*" )
                screen.setText(sum1 * c);
            else
                if( y=="/" )
                    screen.setText(sum1 / c);
                else
                    if( y=="-" )
                        screen.setText(sum1 - c);
                    else
                        if( y=="^" )
             screen.setText((int)Math.pow((double)sum1, (double)c));
        c = 0;
        sum1=0;
        sw=0;
        break;

       case R.id.button20 :
        sum1 = c;
        screen.setText((int) Math.sin(sum1));
        sw=0;
        c=0;
        sum1=0;
        break;

    case R.id.button21 :
        sum1=c;
        screen.setText((int) Math.cos(sum1));
        sw=0;
        c=0;
        sum1=0;
        break;

    case R.id.button22 :
        sum1=c;
        screen.setText((int) Math.tan(sum1));
        sw=0;
        c=0;
        sum1=0;
        break;

    case R.id.button23 :
        sum1=c;
        screen.setText((int) (1/(Math.tan(sum1))));
        sw=0;
        c=0;
        sum1=0;
        break;  

    case R.id.button27 :
        sum1=c;
        screen.setText(sum1*sum1);
        sw=0;
        c=0;
        sum1=0;
        break;

    case R.id.button28 :
        sum1=c;
        screen.setText(sum1*sum1*sum1);
        sw=0;
        c=0;
        sum1=0;
        break;

    case R.id.button32 :
        sum1=c;
        screen.setText((int)(1/sum1));
        sw=0;
        c=0;
        sum1=0;
        break;

    case R.id.button33 :
        sum1=c;
        sw=0;
        y="/";
        screen.setText(screen.getText() + "/");
        c=0;
        break;

    case R.id.button29 :
        sum1=c;
        sw=0;
        y="^";
        screen.setText(screen.getText() + "^");
        c=0;
        break;

    case R.id.button31 :
        sum1=c;
        sw=0;
        screen.setText((int)(Math.sqrt((double)sum1)));
        sum1=0;
        c=0;
        break;

    case R.id.button25 :
        sum1=c;
        sw=0;
        screen.setText((int)Math.exp((double)(sum1)));
        sum1=0;
        c=0;
        break;

    case R.id.button36 :
        sum1=c;
        sw=0;
        screen.setText((int)((sum1*(sum1+1))/2));
        sum1=0;
        c=0;
        break;

    case R.id.button38 :
        sum1=c;
        sw=0;
        screen.setText((int)(Math.toRadians((double)(sum1))));
        sum1=0;
        c=0;
        break;

    case R.id.button26 :
        sum1=c;
        sw=0;
        screen.setText((int)(Math.toDegrees((double)(sum1))));
        sum1=0;
        c=0;
        break;

    case R.id.button24 :
        sum1=c;
        sw=0;
        screen.setText((int)(Math.log((double)(sum1))));
        sum1=0;
        c=0;
        break;
        }
    }
 }

这是.xml文件:     

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignRight="@+id/button2"
    android:text=""
    android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
    android:id="@+id/button7"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button4"
    android:layout_below="@+id/button4"
    android:onClick="buttonEventHandler"
    android:text="6" />

<Button
    android:id="@+id/button8"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button5"
    android:layout_alignTop="@+id/button7"
    android:onClick="buttonEventHandler"
    android:text="5" />

<Button
    android:id="@+id/button9"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button6"
    android:layout_alignTop="@+id/button8"
    android:onClick="buttonEventHandler"
    android:text="4" />

<Button
    android:id="@+id/button10"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button7"
    android:layout_below="@+id/button7"
    android:onClick="buttonEventHandler"
    android:text="3" />

<Button
    android:id="@+id/button11"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button8"
    android:layout_alignTop="@+id/button10"
    android:onClick="buttonEventHandler"
    android:text="2" />

<Button
    android:id="@+id/button12"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button9"
    android:layout_below="@+id/button9"
    android:onClick="buttonEventHandler"
    android:text="1" />

<Button
    android:id="@+id/button13"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button10"
    android:layout_below="@+id/button10"
    android:onClick="buttonEventHandler"
    android:text="0" />

<Button
    android:id="@+id/button17"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button16"
    android:layout_alignTop="@+id/button9"
    android:onClick="buttonEventHandler"
    android:text="-" />

<Button
    android:id="@+id/button18"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button17"
    android:layout_alignTop="@+id/button12"
    android:onClick="buttonEventHandler"
    android:text="*" />

<Button
    android:id="@+id/button19"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button18"
    android:layout_alignTop="@+id/button15"
    android:onClick="buttonEventHandler"
    android:text="/" />

<Button
    android:id="@+id/button21"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button20"
    android:layout_below="@+id/button20"
    android:onClick="buttonEventHandler"
    android:text="cos" />

<Button
    android:id="@+id/button22"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/button18"
    android:layout_alignBottom="@+id/button18"
    android:layout_alignLeft="@+id/button21"
    android:onClick="buttonEventHandler"
    android:text="tan" />

<Button
    android:id="@+id/button23"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button22"
    android:layout_below="@+id/button22"
    android:onClick="buttonEventHandler"
    android:text="cotan" />

<Button
    android:id="@+id/button27"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button13"
    android:layout_below="@+id/button13"
    android:text="x^2"
    android:onClick="buttonEventHandler" />

<Button
    android:id="@+id/button28"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button27"
    android:layout_below="@+id/button27"
    android:text="x^3"
    android:onClick="buttonEventHandler" />

<Button
    android:id="@+id/button26"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button36"
    android:layout_alignLeft="@+id/button23"
    android:onClick="buttonEventHandler"
    android:text="Deg" />

<Button
    android:id="@+id/button31"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button28"
    android:layout_alignLeft="@+id/button15"
    android:text="√"
    android:onClick="buttonEventHandler" />

<Button
    android:id="@+id/button4"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/button1"
    android:layout_marginLeft="20dp"
    android:text="9"
    android:onClick="buttonEventHandler" />

<Button
    android:id="@+id/button5"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button7"
    android:layout_toRightOf="@+id/button7"
    android:text="8"
    android:onClick="buttonEventHandler" />

<Button
    android:id="@+id/button15"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button11"
    android:layout_below="@+id/button11"
    android:onClick="buttonEventHandler"
    android:text="=" />

<Button
    android:id="@+id/button1"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/button2"
    android:layout_alignBottom="@+id/button2"
    android:layout_toRightOf="@+id/button31"
    android:text="CE"
    android:onClick="buttonEventHandler" />

<Button
    android:id="@+id/button2"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/textView1"
    android:layout_marginTop="28dp"
    android:layout_toRightOf="@+id/button1"
    android:onClick="buttonEventHandler"
    android:text="C" />

<Button
    android:id="@+id/button32"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button31"
    android:layout_alignLeft="@+id/button12"
    android:text="1/x"
    android:onClick="buttonEventHandler" />

<Button
    android:id="@+id/button24"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button31"
    android:layout_toRightOf="@+id/button31"
    android:text="log"
    android:onClick="buttonEventHandler" />

<Button
    android:id="@+id/button29"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/button28"
    android:layout_alignBottom="@+id/button28"
    android:layout_toRightOf="@+id/button28"
    android:text="x^y"
    android:onClick="buttonEventHandler" />

<Button
    android:id="@+id/button38"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/button24"
    android:layout_alignBottom="@+id/button24"
    android:layout_alignLeft="@+id/button26"
    android:text="Rad"
    android:onClick="buttonEventHandler" />

<Button
    android:id="@+id/button20"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button9"
    android:layout_toRightOf="@+id/button2"
    android:onClick="buttonEventHandler"
    android:text="sin" />

<Button
    android:id="@+id/button16"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button21"
    android:layout_toLeftOf="@+id/button21"
    android:onClick="buttonEventHandler"
    android:text="+" />

<Button
    android:id="@+id/button6"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button8"
    android:layout_toRightOf="@+id/button8"
    android:onClick="buttonEventHandler"
    android:text="7" />

<Button
    android:id="@+id/button25"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button24"
    android:layout_toRightOf="@+id/button24"
    android:onClick="buttonEventHandler"
    android:text="Exp" />

<Button
    android:id="@+id/button33"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button24"
    android:layout_toRightOf="@+id/button31"
    android:text="x/y"
    android:onClick="buttonEventHandler" />

<Button
    android:id="@+id/button36"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button25"
    android:layout_toRightOf="@+id/button24"
    android:text="Sum"
    android:onClick="buttonEventHandler" />

1 个答案:

答案 0 :(得分:1)

我相信错误就在这一行

 screen.setText((int)Math.pow((double)sum1, (double)c));

您正在设置的是资源ID等于(int)Math.pow((double)sum1, (double)c)的文本,而我假设您要显示此表达式的值。

修复它的简单方法:

screen.setText(""+((int)Math.pow((double)sum1, (double)c)));这会将表达式的结果转换为字符串,并显示在TextView

和btw,请勿使用==使用equals()

来比较字符串