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


目前,我有3个班级:MainMathTaskTask
在Main中,我提供了参数:级别,计数。
我想收到: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保持功能?

最佳答案

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

09-28 01:35