我正在创建一个简单的程序,在启动程序之前要求输入密码。当我的用户输入错误的密码时,他们会收到“拒绝访问”,#34;警告。我使用If / Else语句实现了这一点。我想要做的是在他们输入错误的密码时重新运行我的程序,因为如果他们弄错了他们就不能再次输入控制台。
这是我的工作区:
import java.util.Scanner;
public class PasswordProtected {
public static void main (String args[]){
Scanner Password = new Scanner (System.in);
String mainpassword, userInput;
mainpassword = ("Jacob");
System.out.println("Please enter the password to continue.");
userInput = Password.nextLine();
System.out.println("Verifying Password");
if (userInput.equals(mainpassword)){
System.out.println("Access Granted");
System.out.println("Welcome!");
}else{
System.out.println("Access Denied");
}
}
}
我确实意识到我可以一遍又一遍地复制这样的东西,然而,这是浪费空间并不是无限的。
System.out.println("Please enter the password to continue.");
userInput = Password.nextLine();
System.out.println("Verifying Password");
if (userInput.equals(mainpassword)){
System.out.println("Access Granted");
System.out.println("Welcome!");
}else{
System.out.println("Access Denied");
}
}
请注意我是编程新手,可能需要一些额外的帮助。
如果触发了Else语句,如何在不使用再次手动点击运行按钮的情况下完全重启程序?
答案 0 :(得分:2)
您无需重新启动程序。如果密码不正确,请使用循环再次询问密码。例如,在带有while语句的半伪代码中:
userInput = input.nextLine();
while ( !userInput.equals(mainpassword) ){
userInput = input.nextLine();
}
答案 1 :(得分:1)
尝试while(true)
循环
String mainpassword = ("Jacob");
String userInput = null;
Scanner Password = new Scanner (System.in);
while(true) {
userInput = Password.nextLine();
if (userInput.equals(mainpassword)){
break;
} else {
System.out.println("Access Denied");
}
}
System.out.println("Access Granted");
System.out.println("Welcome!");
答案 2 :(得分:1)
如果您仍然想重新启动任何Java程序,那么可以从代码中的任何其他位置调用main()方法。您可以调用此方法,传入任何必要的String参数。使用线程来执行此操作,如下所示
Thread t = new Thread() {
public void run() {
String[] args = { };
PasswordProtected.main(args);
}
};
t.start();
如果您想在新流程中重新启动应用程序,可以使用
Runtime.getRuntime().exec(...);