使用java中的continue选项连接while循环

时间:2013-02-02 16:35:59

标签: java while-loop validation

我正在开发一个带有数据验证的贷款计算器。我写了一切,很好。我唯一想知道的是如何在用户被问到“继续y / n?:”的位置编写一个while循环,然后只有当用户键入y / Y并且程序ENDS ONLY用户时才继续执行程序类型n / N,任何其他输入应给出错误消息,如“无效,您只能输入Y或N”。因此,如果用户输入“x”,则应显示错误消息。

我已尝试过if if子句,我也尝试用我在程序其余部分使用的方法验证数据,但我根本不知道如何验证字符串。我只能用原始数据类型来做。

这是我现在知道如何编写循环的唯一方法,问题是它只会以Y之外的任何东西结束程序。

分配的选项是使用JOptionPane,但我不知道如何将其合并到while循环中并让它显示yes和no按钮。

    String choice = "y";

    while (choice.equalsIgnoreCase("y")) {

    // code here

    System.out.print("Continue? (y/n): ");
        choice = sc.next();
    }
   }

4 个答案:

答案 0 :(得分:1)

while(true) {
    //Do something
    String choice;
    boolean validChoice = false;
    boolean breakLoop = false;
    while(!validChoice) {
        System.out.print("Stay in loop(Y/N)?");
        choice = sc.next();
        if(choice.equalsIgnoreCase("Y")) {
            validChoice = true;
        }
        if(choice.equalsIgnoreCase("N")) {
            validChoice = true;
            breakLoop = true;
        }
        if(!validChoice) {
            System.out.print("Error! Pick only Y/N");
        }
    }
    if(breakLoop) {
        break;
    }
    //Do something
}

答案 1 :(得分:0)

怎么样?
while(true) {
   // do something
   // get user input (Y or N)
   if(input.equals("Y") {
      continue;
   } else if(input.equals("N")) {
      break;
   } else {
       System.out.println("entered option not valid, please use Y or N");
   }
}

答案 2 :(得分:0)

基本上,你需要两个循环:一个在做工作,另一个在内部提示用户验证。

boolean isContinuing = true;

while (isContinuing) {
    // do work

    boolean inputIsInvalid = true;
    while (inputIsInvalid) {
      System.out.print("Continue? (y/n): ");

      String choice = sc.next();

      if ("y".equalsIgnoreCase(choice)) {
          inputIsInvalid = false;
      }
      else if ("n".equalsIgnoreCase(choice)) {
          inputIsInvalid = false;
          isContinuing = false;
      }
      else {
          System.err.print("Error: Only valid answers are Y/N.");
      }
    }
}

节点:我使用的是布尔变量而不是break语句,它使代码更加直接和可读。

答案 3 :(得分:0)

我发现最好的方法是引入一种解释方法。

while (userWantsToContinue()) {
    // do another round
}

理想情况下,你甚至可以在一个UI抽象的接口上创建一个方法:

while (user.wantsToContinue()) {
    // do another round
}

将行为与UI实现分离。