2013-02-28 58 views
2

我一直在研究Android应用程序,它用复数来计算各种操作。我有几个错误,但stackoverflow社区一直很有帮助,我意识到我的风格需要改进(命名的东西)。然而,问题是程序正在计算错误,第三次检查所有的代码,但由于某些原因,它不能正确计算事情(即2 + 2不是4),logcat显示没有错误。我也尝试将输出答案的部分移到不同的地方,但它仍然会出错。这是我的代码:为什么我的Android应用程序中计算(Eclipse)出现错误?

package complex.OliverV; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.TextView; 
    import android.widget.RadioButton; 
    import android.widget.EditText; 
    public class ComplexNumbersActivity extends Activity { 
     /** Called when the activity is first created. */ 
Button Check; 
RadioButton plus, minus, multiply, div; 
EditText X1,X2,Y1,Y2; 
TextView Ans; 
int sign; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Check = (Button) findViewById(R.id.Check); 
    plus = (RadioButton) findViewById(R.id.plus); 
    minus = (RadioButton) findViewById(R.id.minus); 
    multiply = (RadioButton) findViewById(R.id.multiply); 
    div = (RadioButton) findViewById(R.id.div); 
    Ans = (TextView) findViewById(R.id.Ans); 
    X1=(EditText) findViewById(R.id.X1); 
    X2=(EditText) findViewById(R.id.X2); 
    Y1=(EditText) findViewById(R.id.Y1); 
    Y2=(EditText) findViewById(R.id.Y2); 
    plus.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      sign=1; 
     } 


    }); 
    minus.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      sign=2; 
     } 


    }); 
    multiply.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      sign=3; 
     } 


    }); 
    div.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      sign=4; 
     } 


    }); 
    Check.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      String xs=X1.getText().toString(); 
      String xss=X2.getText().toString(); 
      String ys=Y1.getText().toString(); 
      String yss=Y2.getText().toString(); 
      double x3, y3; 
      if(!xs.equals("") && !xss.equals("") && !ys.equals("") && !yss.equals("")&& xs != null && xss != null && ys != null && yss != null) 
      { 
      double x1=Double.parseDouble(xs); 
      double x2=Double.parseDouble(xss); 
      double y1=Double.parseDouble(ys); 
      double y2=Double.parseDouble(yss); 
      switch(sign) 
      { 
      case(1): 
      { 
       x3=(x1+x2); 
       y3=(y1+y2); 
       Ans.setText("x = "+x3+"y = "+y3); 
      } 
      case(2): 
      { 
       x3=(x1-x2); 
       y3=(y1-y2); 
       Ans.setText("x = "+x3+"y = "+y3); 
      } 
      case(3): 
      { 
       x3=((x1*x2) - (y1*y2)); 
       y3=((x2*y1) + (x1*y2)); 
       Ans.setText("x = "+x3+"y = "+y3); 
      } 
      case(4): 
      { 
       if(x2!=0 && y2!=0) 
       { 
       x3 = ((x1 * x2) + (y1 * y2))/((x2 * x2) + (y2 * y2)); 
       y3 = ((x2 * y1) - (x1 * y2))/((x2 * x2) + (y2 * y2)); 
       Ans.setText("x = "+x3+"y = "+y3); 
       } 
       else 
       { 
        Ans.setText("Enter valid numbers!"); 
       } 
      } 

     } 
     } 
      else 
      { 
       Ans.setText("Enter valid numbers!"); 
      } 
     } 
    }); 
}  
} 
+0

我得到1,我会重命名他们,如果一切都失败了,我意识到它可能会回来咬我的屁股。 – Oliver 2013-02-28 20:02:42

+0

你确定你的加号按钮真的具有'R.id.plus'的ID,并且你的分割按钮有'R.id.div'并且它们没有被切换吗? – kabuko 2013-02-28 20:06:38

+0

是的,他们所有的人都被正确的分配了,那是我看到的第一个地方。 – Oliver 2013-02-28 20:09:37

回答

2

你错过了在switchbreak;语句。在每个case结束时添加它们。 {}也是不必要的每个case

+0

OOOH休息当然,我希望你是对的* facepalm * – Oliver 2013-02-28 20:16:30

+0

我觉得像从窗户跳下,当它是明显的东西。太感谢了 :)) – Oliver 2013-02-28 20:20:50

相关问题