Javascript 循环是否不断重复

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;

所以我的代码的另一个版本是Java,逻辑相当相似,尽管在JavaScript中,用户输入是无限重复的,而不是直到用户丢失为止。这是我的工作Java代码供参考:

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”)&&(upcommingcardwhile(停止!=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”)&&(upcommingcardwhile(停止!=1)问题是什么?您只需在
    do…while
    之前调用
    prompt
    一次。基本上,我的java脚本版本不起作用,并且继续输出相同的答案,而不是继续,最终崩溃。在我的java版本中,当用户丢失时,它会停止。我看到您正在使用
    =
    而不是
    =
    进行“等于”比较。目前,您正在重新分配值,而不是比较它们。Java版本在循环中具有“逻辑”/“函数”。为什么在JavaScript部分将其从循环中移出?而
    =
    =
    /
    ==
    之间有着巨大的区别,在这里,我认为游戏应该一直进行下去,直到用户做出错误的猜测。@ionizer那肯定是b