2017-02-19 95 views
-1

我是新来的Android。我正在尝试开发我的第一台计算器。我的计算器输出很好,但我试图对其进行一些更改。请建议。我的输出是2 + 2 = 4.0如果我把2 + 2和4.0放到2.8 + 1.2时,我怎么能得到4。一个简单的计算器

另外,请帮我在试图找出我怎么能继续增加,直到我按下=。

我说我在看代码如下:

private View.OnClickListener buttonClickListerner = new 
    View.OnClickListener() { 
    float r; 
    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.clear: 
       screen.setText(""); 
       operator.setText(""); 
       FirstNum= 0; 
       showtext.setText(""); 
       break; 
      case R.id.buttonAdd: 
       mMath("+"); 
       operator.setText("+"); 
       showtext.setText(String.valueOf(FirstNum)); 
       break; 
      case R.id.buttonMinus: 
       mMath("-"); 
       operator.setText("-"); 
       break; 
      case R.id.buttonMul: 
       mMath("*"); 
       operator.setText("*"); 
       break; 
      case R.id.buttonequal: 
       mResult(); 
       break; 
      case R.id.buttonDiv: 
       mMath("/"); 
       operator.setText("/"); 
       break; 
      case R.id.buttonPercent: 
       mMath("%"); 
       r = FirstNum/100; 
       showtext.setText("[" + String.valueOf(FirstNum) + "%" + "]");  
       screen.setText(String.valueOf(r)); 
       break; 
      default: 
       String num = ((Button) v).getText().toString(); 
       getKeyboard(num); 
       break; 
     } 
    } 
    }; 

    public void mMath(String str){ 
    FirstNum = Float.parseFloat(screen.getText().toString()); 
    operation = str; 
    screen.setText(""); 
    } 

    public void getKeyboard(String str){ 
    String CurrentScreen = screen.getText().toString(); 
    if(CurrentScreen.equals("0")) 
     CurrentScreen = ""; 
    CurrentScreen = CurrentScreen + str; 
    screen.setText(CurrentScreen); 
    String ExScreen = CurrentScreen; 
    screen.setText(ExScreen); 
    } 

    public void mResult(){ 
    float SecondNum = Float.parseFloat(screen.getText().toString()); 
    float ThirdNum = Float.parseFloat(screen.getText().toString()); 
    float result = 0; 
    //float exresult = result; 

    if(operation.equals("+")){ 
     result = FirstNum + SecondNum; 
     // exresult = result + ThirdNum; 
    } 
    if(operation.equals("-")){ 
     result = FirstNum - SecondNum; 
     //exresult = result - ThirdNum; 
    } 
    if(operation.equals("*")){ 
     result = FirstNum * SecondNum; 
     //exresult = result * ThirdNum; 
    } 
    if(operation.equals("/")){ 
     result = FirstNum/SecondNum; 
     //exresult = result/ThirdNum; 
    } 
    screen.setText(String.valueOf(result)); 
    //screen.setText(String.valueOf(exresult)); 
    showtext.setText(String.valueOf(FirstNum + operation + SecondNum)); 
    //showtext.setText(String.valueOf(FirstNum + operation + SecondNum +   
    operation + ThirdNum)); 
    } 
    } 

回答

0

我想你应该做你的计算,双然后将输出设置为TextView(或任何你正在使用)前,请检查输出,如果int与否,然后决定设定为TextView其输出的形式。

if ((variable == Math.floor(variable)) && !Double.isInfinite(variable)) { 
    // integral type 
} 

this参见

编辑:

的想法是检查号码的那小数部分是0(即,)的数量是整数。

您也可以[如果真,那么变量是一个整数]

// check if 
variable == Math.ceil(variable) 

// check if 
variable == Math.round(variable) 

而且Math.round(float f)将返回数的整数形式使用这些条件!

+0

能否请您给我一些例子中,正确的想法.... – ferrari

+0

@ferrari的想法是检查数的小数部分为0(即)的数字是整数。,看我的编辑 –

+0

@ferrari你明白我的意思吗? –

-1

要添加多个项目首先建立一个数组的大小的用户多长时间能输入,然后遍历每个阵列将它们等同......我知道这是一个模糊的答案,但你可以问我如果有什么不清楚,还有一个投票会很好。你得到的情况只是尝试下面的代码

// array to sum 

    int[] numbers = new int[]{ 10, 10, 10, 10}; 



    int sum = 0; 



    for (int i=0; i < numbers.length ; i++) { 

     sum = sum + numbers[i]; 

    } 



    System.out.println("Sum value of array elements is : " + sum); 



} 
+0

欢迎来到堆栈溢出!花一分钟通过【如何回答](http://stackoverflow.com/questions/how-to-answer)阅读 - 这看起来有益的,但它会受益于一些代码,考虑[编辑](HTTP://计算器.com/posts/41385887 /编辑) - 在那? –

+0

能否请您给我一些例子.... – ferrari

+0

蒂莫西脚轮“聊天室显然新堆栈溢出,但向下表决时,我只是想帮助一个有点苛刻。希望这个编辑很有帮助 –