2013-10-26 2 views
0

Я пытаюсь, чтобы моя программа пыталась прочитать имя файла из командной строки, но если пользователь ничего не вводит в командной строке, он запрашивает и вместо этого запрашивает файл. Вызов пользователя достаточно прост, но мне трудно понять, как это сделать, я чувствую, что столкнулся с проблемой, когда мне придется использовать метод 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()); 
    } 
+1

Когда вы говорите «из командной строки», вы имеете в виду имя файла, передается в качестве аргумента? – initramfs

+0

yes, "run classname file.txt" – user2921899

ответ

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()); 
} 
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

Смежные вопросы