0

这是一个非常愚蠢的问题,但我无法解决它(可能是因为一天结束)。

  • 目前,我有 3 个课程:Main, MathTask, Task.
  • 从 Main 我提供参数:级别,计数。
  • 我要接收:a、b、回答、操作。

我是这样做的:

MathTask mt = new MathTask(level, count);
        Task t = mt.getNewTask();

数学任务:

public class MathTask {
    int level;
    int answer;
    int count;

    public MathTask(int level,int count){
        this.level=level;
        this.count=count;
    }
    public Task getNewTask() {
        int range = (int) Math.pow(10, level);

        int a = getRandomInt(0, range);
        int b = getRandomInt(0, range);
        String operation = "";
        int sw = getOperation();

        switch (sw) {
        case 0:
            // sum
            answer = a + b;
            operation = "+";
            break;
        case 1:
            // substruct
            answer = a - b;
            operation = "-";
            break;
        case 2:
            // multiply
            answer = a * b;
            operation = "*";
            break;
        case 3:
            // divide
            answer = a / (++b);
            operation = "/";
            break;
        default:
            break;

        }
        return new Task(a, b, answer, operation);

    }
    public int getOperation() {
        if (count < 5)
            return 0;
        else if (count > 4 && count < 10)
            return 1;
        else if (count > 9 && count < 15)
            return 2;
        else if (count > 14 && count < 20)
            return 3;
        return 0;
    }
    public int getRandomInt(int from, int to) {

        return from + (int) (Math.random() * ((to - from) + 1));

    }
}

任务

public class Task {
    private int a;
    private int b;
    private int answer;
    private String operation;

    public Task(int a, int b, int answer, String operation) {
        this.a = a;
        this.b = b;
        this.answer = answer;
        this.operation = operation;

    }

    public int getA() {
        return a;
    }

    public int getB() {
        return b;
    }

    public void setB(int b) {
        this.b = b;
    }

    public int getAnswer() {
        return answer;
    }

    public String getOperation() {
        return operation;
    }
}

可以做得更好吗?如何组合MathTaskTask保持功能?

4

1 回答 1

1

设置getNewTask,getOperationgetRandomInt作为 的静态方法Task。这是他们的新签名:

public static Task getNewTask(int level, int count)
public static int getOperation(int count)
public static int getRandomInt(int from, int to)

然后,只需删除MathTask并调用:

Task t = Task.getNewTask(level, count);
于 2013-08-22T14:52:17.253 回答