我们必须制作一个程序而不是为不同的年级生成数学问题,因此它们会因难度而变化。我们必须在最小和最大边界内产生2个随机数。然后我们必须让这两个数字执行一个操作。例如,将它们加在一起,或者将它们相互分开或将它们相乘等。
该程序根据用户提供的年级进行工作。每年级别具有不同的最小和最大数量,以及不同的操作。例如。第1年只是加法和减法,第7年是加法减法乘法除法等。我已经定义了不同的方法来帮助我做到这一点,但我似乎无法让我的程序生成我想要的东西。它应该看起来像下面附带的图像。我的部分代码在这里。当我运行我的程序时,它只产生一些整数(10或20,取决于用户选择尝试的数学问题)。它不会产生数字之间的任何操作,例如(+, - ,/,x)
有人能指出我正确的方向,我做错了吗?
private static void generateQuestion(int yearLevel) {
int min = getMin(yearLevel);
int max = getMax(yearLevel);
int num1 = (int) (min + (max - min) * Math.random());
int num2 = (int) (min + (max - min) * Math.random());
int oper = getOper(yearLevel);
String result = " ";
char op;
switch (oper) {
case 1:
op = '+';
result = (num1 + num2 + " ");
break;
case 2:
op = '-';
result = (num1 - num2 + " ");
break;
case 3:
op = '*';
result = (num1 * num2 + " ");
break;
case 4:
op = '/';
result = (num1 / num2 + " ");
break;
case 5:
op = '%';
result = (num1 % num2 + " ");
break;
}
;
}
private static int getMin(int yearLevel) {
int min = 0;
if (yearLevel == 0 || yearLevel == 1 || yearLevel == 2 || yearLevel == 3 || yearLevel == 4) {
min = 0;
}
if (yearLevel == 5 || yearLevel == 6) {
min = -999;
}
if (yearLevel == 7) {
min = -9999;
}
return min;
}
private static int getMax(int yearLevel) {
int max = 9;
if (yearLevel == 0 || yearLevel == 1 || yearLevel == 2 || yearLevel == 3 || yearLevel == 4) {
max = 9;
}
if (yearLevel == 5 || yearLevel == 6) {
max = 999;
}
if (yearLevel == 7) {
max = 9999;
}
return max;
}
public static int getOper(int yearLevel) {
yearLevel = 0;
int opBounds = 1;
if (yearLevel == 1 || yearLevel == 2) {
opBounds = 2;
}
if (yearLevel == 3 || yearLevel == 4 || yearLevel == 5) {
opBounds = 4;
}
if (yearLevel == 7) {
opBounds = 5;
}
return opBounds;
}
}
答案 0 :(得分:0)
我是一个像你一样的初学者,我会制作额外的课程问题,以保持生成的谜语和正确的结果。然后在你的
private static Question generateQuestion(int yearLevel) {
Question out=new Question();
...
//build string for selected case, for example
String answer=num1+" / "+num2;
double result=num1/num2; //rather use double
out.answer=answer; //String field
out.result=result;
return out;
}
然后通过显示问题并将其与预期结果进行比较来处理它。
答案 1 :(得分:0)
您已将结果声明为字符串并尝试在其中添加数字,但您无法做到这一点。
所以这段代码:
String result = " ";
char op;
switch (oper) {
case 1:
op = '+';
result = (num1 + num2 + " ");
break;
case 2:
op = '-';
result = (num1 - num2 + " ");
break;
更改为:
int result = 0;
char op;
switch (oper) {
case 1:
op = '+';
result = (num1 + num2);
break;
case 2:
op = '-';
result = (num1 - num2);
break;
然后你必须使用像" Integer.toString(int i)"这样的java方法。打印出整数结果(例子)。