Javascript 循环是否不断重复
所以我的代码的另一个版本是Java,逻辑相当相似,尽管在JavaScript中,用户输入是无限重复的,而不是直到用户丢失为止。这是我的工作Java代码供参考:Javascript 循环是否不断重复,javascript,Javascript,所以我的代码的另一个版本是Java,逻辑相当相似,尽管在JavaScript中,用户输入是无限重复的,而不是直到用户丢失为止。这是我的工作Java代码供参考: int stop =0; Scanner scan = new Scanner(System.in); Random rand = new Random(); do { int card; int upcommingcard; String userinput;
int stop =0;
Scanner scan = new Scanner(System.in);
Random rand = new Random();
do {
int card;
int upcommingcard;
String userinput;
card= rand.nextInt(13)+1;
System.out.println("Card is "+card);
System.out.println("Higher or Lower?");
userinput = scan.next();
upcommingcard = rand.nextInt(13)+1;
if(!userinput.equalsIgnoreCase("H")&&(!userinput.equalsIgnoreCase("L"))){
System.out.println("Invalid Input ");
}
else if((userinput.equalsIgnoreCase("H")) && (upcommingcard > card)){
System.out.println("Correct!");
}
else if(userinput.equalsIgnoreCase("L") && upcommingcard < card){
System.out.println("Correct!l ");
}
else {
System.out.println("You lost it was " + upcommingcard);
stop=1;
}
}while (stop != 1);
}
int-stop=0;
扫描仪扫描=新扫描仪(System.in);
Random rand=新的Random();
做{
int卡;
int上传卡;
字符串用户输入;
卡=兰特·耐克斯汀(13)+1;
System.out.println(“卡是”+卡);
System.out.println(“高还是低?”);
userinput=scan.next();
upcommingcard=rand.nextInt(13)+1;
如果(!userinput.equalsIgnoreCase(“H”)和(!userinput.equalsIgnoreCase(“L”)){
System.out.println(“无效输入”);
}
else if((userinput.equalsIgnoreCase(“H”)&&(upcommingcard>card)){
System.out.println(“正确!”);
}
else if(userinput.equalsIgnoreCase(“L”)&提交卡
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
JavaScript-不工作
var max=13;
var min=1;
var stop=0;
var card = Math.floor((Math.random() * (13 - 1) + 1));
var userinput = prompt("Card is "+card+"... Higher or lower?");
var upcommingcard = Math.floor((Math.random() * (13 - 1) + 1));
do{
if((userinput !="H")&&(userinput !="L")){
console.log("Invalid input");
}
else if((userinput ="H")&&(upcommingcard > card)){
console.log("Correct!");
}
else if((userinput ="L")&&(upcommingcard < card)){
console.log("Correct!");
}
else{
console.log("You lost, it was "+ upcommingcard);
stop=1;
}
}
while(stop !=1);
var max=13;
var min=1;
var-stop=0;
var card=Math.floor((Math.random()*(13-1)+1));
var userinput=prompt(“卡是“+卡+”…更高还是更低?”);
var-upcommingcard=Math.floor((Math.random()*(13-1)+1));
做{
如果((userinput!=“H”)&&(userinput!=“L”)){
console.log(“无效输入”);
}
否则如果((userinput=“H”)&&(upcommingcard>card)){
console.log(“正确!”);
}
否则如果((userinput=“L”)&&(upcommingcard
还需要提到的是,它记录了用户的输入是正确的,尽管它无法继续,只是不断地输出相同的输出,直到浏览器崩溃
编辑:谢谢你的回复!循环现在工作得很好,我唯一的问题是逻辑有点缺陷,因为有时我输入'L'表示8,而接下来的int是10。。尽管如此,我还是得到了错误的回答 不是你的控制台没有更新,而是如果输入不正确,你永远不会退出循环,你也永远不会给他们提供重试的选项 因此,如果它们不正确,循环将永远不会结束,控制台将不会更新,并且它们无法重试 我建议将代码更改为以下内容,以提醒用户重试
var max=13;
var min=1;
var-stop=0;
var card=Math.floor((Math.random()*(13-1)+1));
var userinput=prompt(“卡是“+卡+”…更高还是更低?”);
var-upcommingcard=Math.floor((Math.random()*(13-1)+1));
做{
如果((userinput!=“H”)&&(userinput!=“L”)){
console.log(“无效输入”);
警报(“无效输入!”);
用户输入=提示(“卡是“+卡+”…高还是低?”);
}else if((用户输入==“H”)&&(上传卡>卡)){
console.log(“正确!”);
警惕(“正确!”);
停止=1;
}else if((userinput==“L”)&&(upcommingcard while(停止!=1)代码>关于这一点,我想提出以下几点:
您的Java和Javascript代码逻辑不同。在Java中,变量和输入读取在do内部,而在Javascript外部
由于您的提示现在处于循环之外,因此每次都会保持相同的输入值,而不会要求另一个输入值,并且会一直持续到猜错为止,如果输入无效,则会持续到永远。下一点会让你的问题更糟:
您的if
比较运算符无效。如评论中所述,您所做的是将数据分配给userinput
,并始终返回正确的结果
话虽如此,我在添加警报弹出窗口而不是仅添加console.log时对其进行了如下更正:
var-stop=0;
做{
var card=Math.floor((Math.random()*(13-1)+1));
var userinput=prompt(“卡是“+卡+”…更高还是更低?”);
var-upcommingcard=Math.floor((Math.random()*(13-1)+1));
如果((userinput!=“H”)&&(userinput!=“L”)){
console.log(“无效输入”);
警报(“无效输入”);
stop=1;//如果输入无效,则当前正在停止,您可以稍后删除该输入
}else if((用户输入==“H”)&&(上传卡>卡)){
//请注意上面的“==”,还有下一个用于比较相等值的选项
console.log(“正确!”);
警惕(“正确”);
}else if((userinput==“L”)&&(upcommingcard while(停止!=1)代码>问题是什么?您只需在do…while
之前调用prompt
一次。基本上,我的java脚本版本不起作用,并且继续输出相同的答案,而不是继续,最终崩溃。在我的java版本中,当用户丢失时,它会停止。我看到您正在使用=
而不是=
进行“等于”比较。目前,您正在重新分配值,而不是比较它们。Java版本在循环中具有“逻辑”/“函数”。为什么在JavaScript部分将其从循环中移出?而=
和=
/==
之间有着巨大的区别,在这里,我认为游戏应该一直进行下去,直到用户做出错误的猜测。@ionizer那肯定是b