这是一个很愚蠢的问题,但我无法解决(可能因为一天结束了)。
目前,我有3个班级:Main
,MathTask
,Task
。
在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;
}
}
能做得更好吗?如何结合
MathTask
和Task
保持功能? 最佳答案
将getNewTask
,getOperation
和getRandomInt
设置为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);