【问题标题】:How to regularly update an an integer如何定期更新整数
【发布时间】:2016-02-08 18:12:56
【问题描述】:

所以我有一个 String[],其中包含诸如“3+6=”或“5+9/8=”之类的数学表达式。 我有一个获取数组的函数,循环遍历数组并在循环时拆分数组,以便我有一个包含 +、-、*、/ 等数学运算的 String[] 和另一个包含数字的 int[]问题。

然后该函数将答案放入名为 answers 的 int[] 中。我的问题是为什么当我输出答案[0]时,我只能看到第一个数字,而看不到第一个问题的答案?

EDIT = 我发现问题出在哪里。它发生在我的评估方法中。我不知道为什么:

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;

    }

【问题讨论】:

  • 不是问题,但您在 evaluateAnswerTwoOperations 中的 Log.d 语句不准确。
  • 你能举一个输入、预期输出和实际输出的例子吗?
  • @AllLelopath 我有一个生成随机数学表达式的函数。所以输入类似于“3+4=”。预期的输出应该是 7,但它打印出 12。它总是相乘
  • @AllLelopath 有时实际输出会打印出表达式的第一个数字
  • 如果您记录operation 参数的值将会很有用。此外,生成字符串然后解析它们似乎不是一个好的设计,您可以改为具体化操作和运算符。

标签: android android-layout android-fragments android-intent


【解决方案1】:

类似这样的:

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;
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 2013-04-18
    • 1970-01-01
    相关资源
    最近更新 更多