Javascript 我该如何改进这一点;数学问题生成器“;?

Javascript 我该如何改进这一点;数学问题生成器“;?,javascript,Javascript,我目前正在为一个朋友和他的儿子编写一个简单的数学问题生成器 该程序应与操作员产生随机问题+&-可能的结果范围为0-20 因为我刚开始编码,所以我查找了一些适合这个任务的语言。我最终得到了JS,这是我到目前为止得到的代码 它似乎运行得很好,只是如果生成的问题的值不>=0,我的“if-loop”只是取消了问题提示 function aufgabe() { var a = Math.floor(Math.random() * 10) + 1; var b = Math.floor(Math.r

我目前正在为一个朋友和他的儿子编写一个简单的数学问题生成器

该程序应与操作员产生随机问题+&-可能的结果范围为0-20

因为我刚开始编码,所以我查找了一些适合这个任务的语言。我最终得到了JS,这是我到目前为止得到的代码

它似乎运行得很好,只是如果生成的问题的值不>=0,我的“if-loop”只是取消了问题提示

function aufgabe() {
  var a = Math.floor(Math.random() * 10) + 1;
  var b = Math.floor(Math.random() * 10) + 1;
  var op = ["+","-"][Math.floor(Math.random()*2)];
  var ergebnis = eval(a + op + b);

  if(ergebnis >= 0) {
    return prompt("Wie viel ist " + a + " " + op + " " + b + "?") == eval( a + op + b);
  } else {
    ergebnis;
  }
}

var questions = [aufgabe()],
    total = questions.length,
    correct = questions.filter(Boolean).length;

alert( "Du hast "+correct+"/"+total+" Aufagen richtig gelöst!"); 

我认为您正在寻找一个
while
循环来定义一个数学问题,该问题将解析为
=0

因此,一旦定义了
ergebnis
并保持正值,则
while
循环将结束,并显示
提示

查找文档

函数aufgabe(){
变量a、b、op、ergebnis;

而(!ergebnis | | ergebnis则编写一个函数来生成具有最小值和最大值的数字。我在下面有一个函数

getRandomInt = (min, max) => {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1)) + min;
  };
然后,您可以将函数用作getRandomInt(0,20)来生成操作数a。操作数b将由操作数b和操作决定

这意味着在生成操作数b之前,您应该已经有了运算符。如果操作数是“-”,则操作数b将是getRandomInt(0,a)

这样,整个操作的最小值将为0

如果你需要更多的澄清,你可以问

更新: 要测试的完整示例

函数aufgabe(){
变量a、b、op、ergebnis;
a=getRandomInt(0,20);
op=[“+”,“-”][Math.floor(Math.random()*2)];
b=getRandomInt(0,op==“-”?a:20)
ergebnis=eval(a+op+b);
返回提示(“Wie viel ist”+a+“”+op+“”+b+“”?“”==eval(a+op+b);
}
函数getRandomInt(最小值、最大值){
min=数学单元(min);
最大值=数学楼层(最大值);
返回Math.floor(Math.random()*(max-min+1))+min;
};
变量问题=[aufgabe()],
总计=问题。长度,
正确=问题。过滤器(布尔值)。长度;
警惕(“duhast”+correct+“/”+total+“Aufagen richtig gelöst!”);

你的问题是什么?“我如何改进这个”太模糊了。欢迎这么说。首先,如果
语句不是循环(for、while、do-while和其他都是循环)。不确定在
else
语句中要执行什么操作?因此,如果生成的值不超过0,您要执行什么操作?此问题可能更适合codereview.stackexchange。com@RussJ不,不是。这是为了改进工作代码的编码风格。这段代码并不是他们想要的。听起来你真正想要的是一个循环。它应该不断生成一个新的
ergebnis
,直到它至少为0,然后它应该返回它。这太棒了!我也理解了它的区别,并且在
if
语句时关闭了
。太棒了!;)你能将答案标记为已接受吗(grünes Häkchen)?我现在的问题是,对于他来说,为了能够运行它,我建议他下载RunJS,但是
prompt
命令似乎只在浏览器环境中工作。我想这是因为浏览器中出现了文本框,但Windows本身不存在。在是这样吗?为了在浏览器中运行,请将其保存为HTML文件。如
math.HTML
,最小值为内容:
…您的脚本在此…
。然后孩子可以双击该文件并在浏览器中运行。另一种方法是将您的脚本发布到浏览器中,并简单地给他链接。这将允许您改进在链接保持不变的情况下,脚本保持不变。这里有一个初学者:。我不知道这将如何适合程序。如果我理解正确,此函数将用于在我的代码中生成
var a
var b
?它似乎使过程过于复杂,没有真正的好处。它非常适合,并且具有线性runtime与运行时不可预测的迭代过程不同。我将整个实现作为一个更新来帮助您更好地理解。与条件迭代方法相比,此实现承诺更快,复杂性可预测