Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在while循环中添加多个用户提示?_Java_Loops_If Statement_While Loop_User Input - Fatal编程技术网

Java 如何在while循环中添加多个用户提示?

Java 如何在while循环中添加多个用户提示?,java,loops,if-statement,while-loop,user-input,Java,Loops,If Statement,While Loop,User Input,我必须编写一个程序,询问用户的姓名、地址和电话号码。输入数据时,程序应打印数据,并要求用户输入是或否来验证数据。应重复此过程,直到用户满意并回答是 现在,我可以弹出一个提示(在我的例子中,只询问用户名)。但是,如果我想添加多个问题(即询问地址和电话号码)并执行相同的操作,该怎么办?我怎么能这么做 我的代码: package userinfo; import java.util.Scanner; import sun.security.krb5.SCDynamicStoreConfig;

我必须编写一个程序,询问用户的姓名、地址和电话号码。输入数据时,程序应打印数据,并要求用户输入是或否来验证数据。应重复此过程,直到用户满意并回答是

现在,我可以弹出一个提示(在我的例子中,只询问用户名)。但是,如果我想添加多个问题(即询问地址和电话号码)并执行相同的操作,该怎么办?我怎么能这么做

我的代码:

    package userinfo;

import java.util.Scanner;
import sun.security.krb5.SCDynamicStoreConfig;

public class UserInfo {

    public static void main(String[] args) {

        String varify;
        String yes = "yes";
        String no = "no";

        Scanner input = new Scanner(System.in);
        System.out.println("Enter your name: ");
        String name = input.next();
        System.out.println("Your input was: "+name);
        System.out.println("Varify by yes or no: ");

        while (true) {
            varify = input.next();

            if (varify.equalsIgnoreCase(yes)) {
                System.out.println("Varified! Your name is: " + name);

            } else if (varify.equalsIgnoreCase(no)) {
                System.out.println("Type your name again: ");

            }

        }

    }

}

编辑为更多问题添加了逻辑。。。以类似的方式扩展它,满足您的所有需求。您也可以将此代码扩展为单个方法,以避免代码复制。检查用户的答案以获取示例

试试这个。它将存储
名称
变量,以备您进一步使用

我们使用
布尔值
不断要求用户输入自己的姓名,直到用户验证为止

当然,如果名称有效,您仍然可以使用
while(true)
,然后使用
break
,但我更喜欢这种方法,因为代码更清晰、更容易理解

private static boolean isVerified(String verify) {
    if (verify.equalsIgnoreCase("yes")) {
        return true;
    } else if (verify.equalsIgnoreCase("no")) {
        return false;
    } else
        return false;
}

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    boolean validName = false;
    boolean validTelephoneNo = false;
    boolean validAddress = false;
    String name="";
    String telephoneNo="";
    String address="";

    while (!validName) {
        System.out.print("Enter your name: ");
        name = input.next();

        System.out.println("Are you sure your name is " + name + "?");
        final String verify = input.next();

        if (isVerified(verify)) {
            System.out.println("Verified! Your name is: " + name);
            validName = true;

        } else {
            System.out.println("Not verified! Please type your name again.");
        }
    }

    while (!validTelephoneNo) {
        System.out.print("Enter your telephone nummber: ");
        telephoneNo = input.next();

        System.out.println("Are you sure your telephone number is " + telephoneNo + "?");
        final String verify = input.next();

        if (isVerified(verify)) {
            System.out.println("Verified! Your telephone number is: " + telephoneNo);
            validTelephoneNo = true;
        }

        else {
            System.out.println("Not verified! Please type your telephone number again.");
        }
    }

    while (!validAddress) {
        System.out.print("Enter your address: ");
        address = input.next();

        System.out.println("Are you sure your address is " + address + "?");
        final String verify = input.next();

        if (isVerified(verify)) {
            System.out.println("Verified! Your address is: " + address);
            validAddress = true;
        }

        else {
            System.out.println("Not verified! Please type your address again.");
        }
    }

    System.out.println("Done, here is your info:");
    System.out.println("Name: " + name);
    System.out.println("Telephone Number: "+telephoneNo);
    System.out.println("Address: "+address);
}

您可以将此代码提取到方法:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String userName = readFieldAndVerify(input, "Enter your name: ");
    String userAddress = readFieldAndVerify(input, "Enter your address: ");
    String userPhoneNumber = readFieldAndVerify(input, "Enter your phone number: ");
}

private static String readFieldAndVerify(Scanner input, String prompt) {
    while (true) {
        System.out.print(prompt);
        String field = input.next();

        System.out.println("Are you sure (yes / no)?");
        String verify = input.next();

        if (verify.equalsIgnoreCase("yes")) {
            System.out.println("Verified!");
            return field;
        } else {
            System.out.println("Canceled");
        }
    }
}

但我想知道如何添加另一个问题。这意味着当用户选择YES时,程序应打印确认名称并询问下一个问题(这里是电话号码/地址)。再一次要求多样化……米哈伊克,我感谢你的解决方案。这也是一个很好的例子。但是因为我先尝试了alester的代码,他的代码也比较简单。我接受了他的回答。无论如何,感谢您的时间和努力,我将保留您的建议供我将来使用。@JabirAlFatah没问题:)这是一个更好的解决方案!比我解决多个问题的方法好多了。假设OP只是想要一个简单的例子。阿拉斯特,这就是我想要的。迫不及待地想接受你的回答。