我怎样才能在这里使用“do while”命令?

时间:2015-06-15 13:19:28

标签: java

我正在学习java,这是我的代码

import java.util.Scanner;


public class Application {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);


        System.out.println("Enter Password");
        String value = input.nextLine();


        if(value.equals("mycat")){
            System.out.println("Password Accepted!");
            System.out.println("My Personal Number is: ");
            System.out.println("blahblah");
        }
        else 
            System.out.println("Incorrect Password!");


        }


    }

我想继续说错误的密码并允许输入另一个而不是停止。基本上我想要循环,但是当我这样做时,我得不到我想要的结果。

4 个答案:

答案 0 :(得分:3)

Scanner input = new Scanner(System.in);

do
{
    System.out.println("Enter Password");
    String value = input.nextLine();

    if(value.equals("mycat")){
        System.out.println("Password Accepted!");
        System.out.println("My Personal Number is: ");
        System.out.println("blahblah");
    }
    else 
        System.out.println("Incorrect Password!");
} while(!value.equals("mycat"))

input.close();

将代码包含在Try-Catch块中。

答案 1 :(得分:2)

import java.util.Scanner;


public class Application {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    String value;
    System.out.println("Enter Password");
    value = input.nextLine();
    while(!value.equals("mycat")) {
       System.out.println("Incorrect Password!");
       System.out.println("Enter Password");
       value = input.nextLine();
    }
    System.out.println("Password accepted"); // if you are here then the password is good
}

答案 2 :(得分:1)

考虑使用功能来处理密码获取:

String getPassword(/*you might need to pass input as a parameter*/)
{
    while (true){ /*an infinite loop*/
        String value = input.nextLine();
        if (value.equals("mycat")){
            return value;
        }
        System.out.println("Incorrect Password!");
    }
}

这可以帮助您扩展程序,只需对getPassword的调用者进行最少的更改:

  1. 远离硬编码"mycat"

  2. 使用专为密码建模设计的特殊对象。 String是不安全的,因为数据在一个连续的块中。

  3. 引入最大数量的试验,可能有延迟循环。

答案 3 :(得分:1)

Java中有两个不同的while循环。

do {
    //Code here
} while (/*Condition here */)

while (/*Condition here */) {
    //Code here
}

第一个测试括号中的代码执行后的条件,第二个测试之前的测试。 这意味着使用do { } while()您在第一次检查条件之前运行一次代码,这就是您想要的。

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    String value;

    do{
        System.out.println("Enter Password");
        value = input.nextLine();

        if(value.equals("mycat")){
            System.out.println("Password Accepted!");
            System.out.println("My Personal Number is: ");
            System.out.println("blahblah");
        }
        else 
            System.out.println("Incorrect Password!");

    } while (!value.equals("mycat"))

}

像这样的东西可能就是你想要的东西