2017-02-19 87 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

蒂莫西腳輪「聊天室顯然新堆棧溢出,但向下表決時,我只是想幫助一個有點苛刻。希望這個編輯很有幫助 –