2014-06-18 31 views
2

我使用eclipse ADT做的一个android计算器ADT 它工作正常,但是我无法查看整个公式,当我计算这意味着在测试期间当我正在计算我无法查看整个方程x + y = z我只能查看X,然后当我按+我无法在屏幕上看到时,当我点击它时看到了Y,然后我看到了Y答案Z为什么我不能查看整个方程? X + Y = Z这里是我的Java代码无法查看Android计算器的完整公式

package com.zee.sampleCalculator; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import com.zee.sampleCalculator.R; 


public class MainActivity extends Activity { 

public String str =""; 
Character op = 'q'; 
int i,num,number; 
EditText showResult; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     showResult = (EditText)findViewById(R.id.result_id); 
    } 

    public void btn1Clicked(View v){ 
     insert(1); 
    } 

    public void btn2Clicked(View v){ 
     insert(2); 
    } 

    public void btn3Clicked(View v){ 
     insert(3); 
    } 

    public void btn4Clicked(View v){ 
     insert(4); 
    } 

    public void btn5Clicked(View v){ 
     insert(5); 
    } 

    public void btn6Clicked(View v){ 
     insert(6); 
    } 

    public void btn7Clicked(View v){ 
     insert(7); 
    } 

    public void btn8Clicked(View v){ 
     insert(8); 
    } 

    public void btn9Clicked(View v){ 
     insert(9); 
    } 

    public void btn0Clicked(View v){ 
     insert(0); 
    } 

    public void btnplusClicked(View v){ 
     perform(); 
     op = '+'; 
    } 

    public void btnminusClicked(View v){ 
     perform(); 
     op = '-'; 
    } 

    public void btndivideClicked(View v){ 
     perform(); 
     op = '/'; 
    } 

    public void btnmultiClicked(View v){ 
     perform(); 
     op = '*'; 
    } 

    public void btnequalClicked(View v){ 
     calculate(); 
    } 

    public void btnclearClicked(View v){ 
     reset(); 
    } 

    private void reset() { 
     // TODO Auto-generated method stub 
     str =""; 
     op ='q'; 
     num = 0; 
     number = 0; 
     showResult.setText(""); 
    } 

    private void insert(int j) { 
     // TODO Auto-generated method stub 
     str = str+Integer.toString(j); 
     num = Integer.valueOf(str).intValue(); 
     showResult.setText(str); 
    } 

    private void perform() { 
     // TODO Auto-generated method stub 
     str = ""; 
     number = num; 
    } 

    private void calculate() { 
     // TODO Auto-generated method stub 
     if(op == '+') 
     num = number+num; 
     else if(op == '-') 
     num = number-num; 
     else if(op == '/') 
     num = number/num; 
     else if(op == '*') 
     num = number*num; 
     showResult.setText(""+num); 
    } 

} 

预先感谢

回答

0

更改执行()方法是:

private void perform(String op){ 
    str = str + op; 
    number = num; 
    showResult.setText(str); 
} 

,并在您btnplusClicked(视图V)使用

perform(op); 

,btnminusClicked(视图V),btndivideClicked(视图V),btnmultiClicked (View v)来调用它。

现在perform()方法将添加到str + -/*并且不重置为“”。

而在你的计算方法做到这一点:

private void calculate(){ 
    int result; 

    if(op == '+') 
     result = number+num; 
    else if(op == '-') 
     result = number-num; 
    else if(op == '/') 
     result = number/num; 
    else if(op == '*') 
     result = number*num; 
    showResult.setText(number + " " + op + " " + num + " = " + result); 
} 

如果你不理解的东西,不要担心问。我希望这可以帮助你:)

EDIT1:

我犯了一个小错误。你使用的是char,而不是String。

public void btnplusClicked(View v){ 
    op = '+'; 
    perform(op); 
} 

private void perform(char op){ 
    ... 
} 

,并计算()

private void calculate(){ 
    int result = 0; 
    ... 
} 

现在,它应该工作。但据我所知,你不了解Java及其类型的主要基础知识。 Android是基于Java的,并且在您开始使用Android进行编程之前,它需要从Java中了解一点点。

+0

非常感谢我在开始时所做的一切,正如你在第一个代码中所说的那样,但是在第二个代码中(op);你是否打算像这样做 'public void btnplusClicked(View v){ perform(op); op ='+'; }' }因为当我做了一个错误显示哪个是_The方法执行(字符串)类型MainActivity不适用于参数(字符)_和在最后的代码中我得到了一个错误ShowResult.setText结果在最后被标记为错误_局部变量结果可能尚未初始化_ *希望你能帮我解决这些错误。*再次感谢。 –

+0

@ZeeE。我编辑了我的答案,现在,它应该工作。 –

+0

**非常感谢**我会再次检查它:D我知道Java但仍需要学习更多。 –

0

嗯,你的代码不正是你问它做什么。为了看到整个方程,你将不得不改变一些东西。

private void perform() { 
    // TODO Auto-generated method stub 
    str = ""; //get the value in showResult by doing showResult.getText() 
       // and keep appending to the string. 
    number = num; 
    } 

也在你:

private void calculate() { 
    // TODO Auto-generated method stub 
    if(op == '+') 
    num = number+num; 
    else if(op == '-') 
    num = number-num; 
    else if(op == '/') 
    num = number/num; 
    else if(op == '*') 
    num = number*num; 
    showResult.setText(number+ " " + op + " " + num + " " + "=" + num); // change this to 
    } 

我还没有尝试过了,但是这应该使你沿着正确的方向发展。

+0

感谢您的帮助@android_Muncher .. 但如果你请告诉我更多关于第一个代码,我没有得到它。 和show.Result.setText中的第二个代码我在这个区域+语法错误+“”+我应该删除“”? 对不起,但我在这整个事情是新的,我不是专家,当它是关于Java。 –