我有用于制作数学问题的JavaScript代码(简单的数学问题)。一切都是随机的。 加上(+)一切正常。 e.x。
1 + 3
2 + 4
8 + 9
当检查minus参数的第一个数字是否大于第二个(1-2错误; 2-1代码执行)的函数时,会发生无限循环。我对解释有好处,希望在看到代码时能得到它。
输出结构为:
数字1-10(随机)加上
数字1-10(随机),减去
从1-100(随机)加上
的数字数字1-10(随机),减去
<html>
<p id='plus10'></p>
<p id='minus10'></p>
<p id='plus100'></p>
<p id='minus100'></p>
<script>
arr2 = [];
var lastArr2 = [];
var num1,num2;
//FIRST ARRAY
while(lastArr2.length<121){
arr2.push('<br>'+Math.round(Math.random() * 10)+'+'+Math.round(Math.random() * 10)+'=');
lastArr2=removeDuplicates(arr2);
}
document.getElementById('plus10').innerHTML=(lastArr2.join(' '));
//SECOND ARRAY
arr1 = [];
var lastArr1 = [];
while (lastArr1.length < 121) {
arr1.push('<br>' + Math.round(Math.random() * 100) + '+' + Math.round(Math.random() * 100) + '=');
lastArr1 = removeDuplicates(arr1);
}
document.getElementById('plus100').innerHTML = (lastArr1.join(' '));
//THIRD ARRAY
arr3 = [];
var lastArr3 = [];
while (lastArr3.length < 121) {
gen();
}
function gen(){
//minus function
num1=Math.round(Math.random()*10);
num2=Math.round(Math.random()*10);
if(num1<num2){
gen();
}else{
lastArr3 = removeDuplicates(arr3);
arr1.push(num1+'-'+num2+'=');
}
}
document.getElementById('minus10').innerHTML = (lastArr3.join(' '));
function removeDuplicates(arr){
let unique_array = []
for(let i = 0;i < arr.length; i++){
if(unique_array.indexOf(arr[i]) == -1){
unique_array.push(arr[i])
}
}
return unique_array
}
</script>
</html>
我错了
arr1.push(num1+'-'+num2+'=');
应该是
arr3.push(num1+'-'+num2+'=');
但这并不能解决无限循环
答案 0 :(得分:0)
我不确定你在这里要做什么,但是你的
while (lastArr3.length < 121) {
gen();
}
while
这里(对于第三个数组)对我来说绝对是一个无限循环。您应该对lastArr3
gen()
内的lastArr3.length < 121
进行一些更改,以使您的条件while
无法满足,这最终会使您脱离Integer.valueOf("3");
。
答案 1 :(得分:0)
在gen()
函数中,arr1.push()
应该是arr3.push()
,否则循环条件永远不会改变,它将保持无限循环。