Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 生成随机数学问题_Java - Fatal编程技术网

Java 生成随机数学问题

Java 生成随机数学问题,java,Java,我们必须制作一个程序,为不同年级的学生生成数学题,因此难度不同。我们必须在最小和最大边界内产生2个随机数。然后我们必须让这两个数字进行运算。例如,将它们相加,或将一个除以另一个,或将它们相乘等 该程序根据用户提供的年份级别工作。每一年的级别都有不同的最小和最大数量,以及不同的操作。第一年只是加减法,第七年是加减乘法除法等等。我定义了不同的方法来帮助我做到这一点,但我似乎无法让我的程序生成我想要的。它应该看起来像下面所附的图片。我的部分代码在这里。当我运行我的程序时,它只产生一些整数(10或20取

我们必须制作一个程序,为不同年级的学生生成数学题,因此难度不同。我们必须在最小和最大边界内产生2个随机数。然后我们必须让这两个数字进行运算。例如,将它们相加,或将一个除以另一个,或将它们相乘等

该程序根据用户提供的年份级别工作。每一年的级别都有不同的最小和最大数量,以及不同的操作。第一年只是加减法,第七年是加减乘法除法等等。我定义了不同的方法来帮助我做到这一点,但我似乎无法让我的程序生成我想要的。它应该看起来像下面所附的图片。我的部分代码在这里。当我运行我的程序时,它只产生一些整数(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;

}

}

我和你们一样是个初学者,我会在课堂上提出额外的问题,以保留生成的谜语和更正结果。然后在你的

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

然后通过显示问题并将其与预期结果进行比较来进行处理。

您已将结果声明为字符串,并试图在其中添加数字,但您不能这样做。
所以这个代码:

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(inti)”的java方法来打印整数结果(示例)。

在void方法
generateQuestion()中,在何处使用变量
result&op
???当我从getOper方法切换操作时,我使用op,该方法将数字年份级别数字转换为一个操作,例如“+”-”等。然后,在打破每个案例之前,我使用结果将其转换为字符串。您期望的输出是什么?你提到一张照片,但我看不到