使用命令停止if循环

时间:2018-12-01 02:23:22

标签: java

因此,基本上,我试图创建两个命令!on和!off,当用户键入!on时,它将启动此infinite循环,一旦用户键入!off,则无限for循环将停止。 我已经尝试了许多方法,但是它不起作用,例如另一个for循环,例如:

if(userInput.equalsIgnoreCase("!on"){
    for(int i=0; i<10){
*random code*
}
}
if(userInput.equalsIgnoreCase("!off"){
i = 10;
}

我也尝试过布尔值,但是代码不会在无限循环结束后执行。

在发表评论之前,请阅读: 我希望此循环为无限循环,但我的问题是用户是否输入!off可以停止循环的无限循环。

基本上我想问的是是否有可能摆脱无限循环

5 个答案:

答案 0 :(得分:0)

似乎问题出在您的for循环中。

您的for循环for(int i=0; i<10)触发了一个无限循环,因为变量i并未增加,并且将无限地保持在10以下。

for (int i = 0; i < 10; ++i)替换for循环,看看执行循环是否仍会导致无限循环。

答案 1 :(得分:0)

首先,这在逻辑上和语法上都是胡说八道。不要这样做。

if(userInput.equalsIgnoreCase("!on"){
    for(int i=0; i<10){
        *random code*
    }
}

if(userInput.equalsIgnoreCase("!off"){
    i = 10;
}

您正在寻找的可能更接近此:

if(userInput.equalsIgnoreCase("!on"){
    while(true){ //proper way to start an infinite loop
        userinput = /* read user input with your preferred method */;
        if(userInput.equalsIgnoreCase("!off"){
            break; //break ends the closest loop
        }
    }
}

答案 2 :(得分:0)

您将需要使用多线程。让一个线程运行您的无限循环,另一线程获取用户输入以停止该线程运行循环。

多线程基础:https://www.geeksforgeeks.org/multithreading-in-java/

请求线程停止:https://praveer09.github.io/technology/2015/12/06/understanding-thread-interruption-in-java/

答案 3 :(得分:0)

您可以通过检查变量来打破循环:

<form class="ui form">
  <div class="field">
    <label>First Name</label>
    <input type="text" name="first-name" placeholder="First Name">
  </div>
  <div class="field">
    <label>Last Name</label>
    <input type="text" name="last-name" placeholder="Last Name">
  </div>
  <div class="field">
    <div class="ui checkbox">
      <input type="checkbox" tabindex="0" class="hidden">
      <label>I agree to the Terms and Conditions</label>
    </div>
  </div>
  <button class="ui button" type="submit">Submit</button>
</form>

答案 4 :(得分:0)

据我了解,您想要一个不断循环直到满足特定条件的循环。考虑下面的用Java编写的while循环:

public static void main(String[] args) {

    String userInput = "!on";

    while (isUserInputOn(userInput)) {
         System.out.println("Do stuff");
         userInput = getUserInput(); // Then something changes the state of userInput
    }
}

private static boolean isUserInputOn(String userInput) {
    return "!on".equalsIgnoreCase(userInput);
}

private static String getUserInput() {
    double random = Math.random() * 10D;

    if(random > 5) {
        return "!on";
    } else {
        return "!off";
    }    
}

请注意,方法getUserInput()检查userInput中的更改,并且此方法需要写入您的业务逻辑,因为当前它使用的是随机双数。