Java:如何自动重新启动控制台程序如果" Else"声明被触发

时间:2015-04-22 19:52:26

标签: java

我正在创建一个简单的程序,在启动程序之前要求输入密码。当我的用户输入错误的密码时,他们会收到“拒绝访问”,#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语句,如何在不使用再次手动点击运行按钮的情况下完全重启程序?

3 个答案:

答案 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(...);