我正在开发一个涉及用户输入的项目。我正在检查所提供的答案是否等于答案。我希望他们继续回答,直到他们得到正确的答案。我没有使用一堆if语句,而是想使用循环。我已经尝试了几个循环,但所有循环都会无限期地继续下去。以下是我尝试的程序(我没有尝试 for 循环,因为它似乎不适用)。
function answer(){
var input = Browser.inputBox('Please submit your answer');
while(input != 1){
input = Browser.inputBox('your answer was incorect, please try again');
}
Browser.msgBox('good job you got the right answer!')
}
我也试过
function answer(){
var input = Browser.inputBox('Please submit your answer');
do{
input = Browser.inputBox('your answer was incorect, please try again');
}while(input != 1);
Browser.msgBox('good job you got the right answer!')
}
我知道做循环会让他们提交两个答案,但我只是在尝试。任何帮助将不胜感激。
**在简化中我删除了问题所以这里是我遇到问题的代码。
function answer(){
var input = Browser.inputBox('Please submit your answer');
var range1 = SpreadsheetApp.getActiveSpreadsheet.getSheetByName(sheet1).getRange('A1');
var range2 = SpreadsheetApp.getActiveSpreadsheet.getSheetByName(sheet1).getRange('B1');
range1.setValue(input);
var answer = range2.getValue();
while(answer != 'correct'){
input = Browser.inputBox('your answer was incorect, please try again');
range1 = SpreadsheetApp.getActiveSpreadsheet.getSheetByName(sheet1).getRange('A1');
range2 = SpreadsheetApp.getActiveSpreadsheet.getSheetByName(sheet1).getRange('B1');
range1.setValue(input);
answer = range2.getValue();
}
Browser.msgBox('good job you got the right answer!')
}
此代码指的是进行计算的电子表格,这些计算似乎会抛弃循环并导致它们进入无限循环。在B1中,我根据A1中的内容运行计算并显示正确或不正确。我跑了,等了。大约5-10分钟后,我的脚本给了我超时等待用户响应(第2行,文件"代码")错误。我一直看着电子表格,它从来没有给我一个输入框。
答案 0 :(得分:1)
除非您希望B2
发生变化,否则没有理由反复执行getRange('B1')
和.getValue()
,但这不是问题,只是一些优化。
现在问你的问题。这是代码逻辑中的一个缺陷
while(answer != 'correct')
您的脚本answer
中的是B2
中的值,但是您不会使用输入更改此值,因此如果B2
值为correct
,则它将始终运行一次但是,如果B2
不 correct
,那么它将无限循环。
修改强>
我把代码改成了一些我认为你希望它做一些优化的代码。删除了不必要的getRange()
和.getSheet
重复
function answer(){
var objSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
var objUi = SpreadsheetApp.getUi();
var input = objUi.prompt('Please submit your answer').getResponseText();
var range1 = objSheet.getRange('A1');
var range2 = objSheet.getRange('B1');
range1.setValue(input);
var answer = range2.getValue();
while (input != answer){
input = objUi.prompt('Your answer was incorect, please try again').getResponseText();
range1.setValue(input);
}
objUi.alert('good job you got the right answer!')
}