从标签错误继续

时间:2016-09-11 15:06:11

标签: java loops

我正在用java编写一个模拟的在线银行客户端。我需要能力(或替代方案)才能从标签继续。到目前为止,这是我的代码中的一个片段。

    Main:
    {
    for ( ; ;) {
    System.out.println("Welcome to Tamarin© online banking!");
    System.out.println("Select register or login:");

    choice = scan.nextLine();

    if (choice.equalsIgnoreCase("register")) {
        register:
        {
        System.out.println("Welcome to register! Please type your username:");
        userreg = scan.nextLine();

        if (accounts.contains(userreg)) {
            System.out.println("Username taken! Try again.");
            continue register;

Java正在给我一个“继续不能在循环外使用”的错误。任何想法(如果注册失败)我可以让用户回到最后一步('注册'标签)?如果没有,我怎么能让这个代码工作?

(我显然在结尾处有结束支持)。

2 个答案:

答案 0 :(得分:0)

嗯,你不应该首先使用goto(目前在Java中不存在),其原因是使用标签会导致结构严重且难以维护代码(也称为意大利面条代码)。

相反,你应该添加nameTaken布尔和循环,而它是真的。

while(nameTaken) {
    System.out.println("Welcome to register! Please type your username:");
    userreg = scan.nextLine();

    if (accounts.contains(userreg))
        System.out.println("Username taken! Try again.");
    else {
        // do stuff
        nameTaken = false;
    }
}

答案 1 :(得分:0)

首先,感谢您使用标签,并从很久以前将我们全部带回C编程。其次,通过使用适当构造的循环,您可以轻松地模拟当前对标签的行为,例如

do {
    System.out.println("Welcome to Tamarin© online banking!");
    System.out.println("Select register or login:");
    choice = scan.nextLine();

    if (choice.equalsIgnoreCase("register")) {
        do {
            System.out.println("Welcome to register! Please type your username:");
            userreg = scan.nextLine();

            if (!accounts.contains(userreg)) {
                System.out.println("Creating username " + userreg + " ...");
                break;
            }
            else {
                System.out.println("Username taken! Try again.");
            }
        } while (true);
    }

    // the rest of your logic goes here
} while (true);