2016-02-08 13 views
0

所以我有一個String [],其中包含數學表達式,如「3 + 6 =」或「5 + 9/8 =」。 我有一個函數,獲取數組,通過數組循環,while循環,它分裂數組,使我有一個字符串[]包含數學運算像+, - ,*,/和另一個int []包含數字在問題中。如何定期更新整數

該函數然後將答案放入一個稱爲答案的int []。我的問題是,爲什麼當我輸出答案[0]時,我只能看到第一個數字,而不是第一個問題的答案?

編輯=我發現問題在哪裏發生。這發生在我的評估方法中。我不知道爲什麼:

public int evaluateAnswerTwoOperations(String operation, int numberOne, int numberTwo) { 

    switch(operation){ 

     case "+": 
      Log.d("usingsubtraction","plus2nmbers"); 
      return numberOne + numberTwo; 
     case "-": 
      Log.d("usingsubtraction","usingsubtraction"); 
      return numberOne - numberTwo; 
     case "/": 
      Log.d("usingsubtraction","usingdivision"); 
      return numberOne/numberTwo; 
     default: 
      Log.d("usingsubtraction","usingmultiplication"); 
      return numberOne*numberTwo; 

    } 
+0

不是問題,但在'evaluateAnswerTwoOperations'你Log.d陳述是不準確的。 –

+0

您能舉一個輸入,期望輸出和實際輸出的例子嗎? –

+0

@AlLelopath我有一個函數可以產生一個隨機的數學表達式。所以輸入就像「3 + 4 =」。期望的輸出應該是7,但是它打印出12個。它總是乘以 –

回答

0

事情是這樣的:

import android.util.Log; 

public class TwoNumberOperation { 

    private final String PLUS = "+"; 
    private final String MINUS = "-"; 
    private final String MULTIPLY = "*"; 
    private final String DIVIDE = "/"; 
    private final String EQUAL = "="; 

    private String operation; 
    private int numberOne; 
    private int numberTwo; 

    public TwoNumberOperation(String operation, int numberOne, int numberTwo) { 
     if (operation.equalsIgnoreCase(PLUS) || 
       operation.equalsIgnoreCase(MINUS) || 
       operation.equalsIgnoreCase(MULTIPLY) || 
       operation.equalsIgnoreCase(DIVIDE)) { 

      this.operation = operation; 
      this.numberOne = numberOne; 
      this.numberTwo = numberTwo; 
     } 
     else { 
      Log.d("error", "error: invalid operation"); 
      this.operation = ""; 
      this.numberOne = 0; 
      this.numberTwo = 0; 
     } 
    } 

    public int getAnswer() { 

     switch (operation) { 

      case PLUS: 
       Log.d("addition", "addition"); 
       return numberOne + numberTwo; 
      case MINUS: 
       Log.d("subtraction", "subtraction"); 
       return numberOne - numberTwo; 
      case MULTIPLY: 
       Log.d("multiplication", "multiplication"); 
       return numberOne/numberTwo; 
      case DIVIDE: 
       Log.d("division", "division"); 
       return numberOne/numberTwo; // note the returning an int 
      default: 
       Log.d("error", "error"); 
       return -999999999; 
     } 
    } 

    @Override 
    public String toString() { 
     return numberOne + operation + numberTwo + EQUAL; 
    } 

}