如何组合课程?

时间:2013-08-22 14:45:42

标签: java

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

  • 目前,我有3个班级:MainMathTaskTask
  • 从Main我提供参数:level,count。
  • 我想收到:a,b,回答,操作。

我是这样做的:

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

MathTask:

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以保持功能?

1 个答案:

答案 0 :(得分:1)

getNewTaskgetOperationgetRandomInt设置为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);