我正在用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正在给我一个“继续不能在循环外使用”的错误。任何想法(如果注册失败)我可以让用户回到最后一步('注册'标签)?如果没有,我怎么能让这个代码工作?
(我显然在结尾处有结束支持)。
答案 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);