尝试从命令行读取,如果没有,则提示

时间:2013-10-26 04:05:42

标签: java command-line-arguments

我正在尝试让我的程序尝试从命令行读取文件名,但如果用户没有在命令行中输入任何内容,则会提示并请求输入文件。提示用户很简单,但是我无法弄清楚如何同时使用这两者,我觉得一旦我必须使用我的countBrackets(in)方法就会遇到麻烦,因为我无法在两次声明变量

{
  public static void main(String[] args)throws IOException
  {
    File inputFile;

    do{
      Scanner console=new Scanner(System.in);
      System.out.print("enter file:");
      String fileName=console.next();
      inputFile=new File(fileName);
      Scanner in=new Scanner(new File(fileName));
      countBrackets(in);
    }while(!inputFile.exists());
  }

2 个答案:

答案 0 :(得分:0)

试试这个。

if(args[0]!=null&&!args[0].isEmpty()){
      inputFile=new File(args[0]);
}

if(inputFile==null){
   do{
       Scanner console=new Scanner(System.in);
       System.out.print("enter file:");
       String fileName=console.next();
       inputFile=new File(fileName);
       Scanner in=new Scanner(new File(fileName));
       countBrackets(in);
    }while(!inputFile.exists());
}

答案 1 :(得分:0)

您需要查看args的长度。如果它为0则表示用户没有传递任何内容。

你应该如下所示:

int firstArg;
if (args.length > 0) {
    try {
        firstArg = Integer.parseInt(args[0]);
    } catch (NumberFormatException e) {
        System.err.println("Argument" + " must be an integer");
        System.exit(1);
    }
}

教程在这里:http://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html