2013-03-29 3 views
0

У меня есть программа Java, которую я хочу запустить в командной строке как банку. Но прежде чем я запустил свою функцию, обрабатывающую данные, у меня есть 2 условия, которые мне нужно удовлетворить. 1. args[0] должно быть целым числом. 2. Там должно быть ровно 2 аргумента. Если эти условия не выполняются, я хочу, чтобы появилось сообщение об ошибке, а затем выйдите из системы. Я думаю, что я могу сделать # 1 правильно, но как бы я объединил оба?условия, которые необходимо выполнить перед запуском моей программы

public static void main(String[] args) throws IOException 
{ 
    try 
    { 
     int x = Integer.parseInt(args[0]); 
     process(x, args[1]);  
    } 
    catch(NumberFormatException e) 
    { 
     System.output.println("Please enter an integer"); 
    } 


} 
+2

'args.length' является вашим другом. – NPE

ответ

2

Тогда здесь это код, который вы должны написать:

public static void main(String[] args) throws IOException { 
    if(args == null || args.length != 2) { 
     System.out.println("You have not entered the required two parameters"); 
     return; 
    } 
    try { 
     int x = Integer.parseInt(args[0]); 
     process(x, args[1]); 
    } catch (NumberFormatException e) { 
     System.out.println("Please enter an integer"); 
    } 


} 

Обратите внимание, что в вашем System.output.println есть ошибка компиляции («Введите целое число»); , это скорее:

System.out.println("Please enter an integer"); 
+0

Это может повлиять на попытку запустить программу с недопустимыми аргументами (вы должны вернуться или выйти после того, как первая проверка args завершится с ошибкой. – jzworkman

+0

Вы правы, просто добавили оператор «return». – javadev

+0

@javadev do I нужен ли возврат или выход системы в конце выписки? – user2007843

0

args.length даст вам ряд аргументов, так что добавить что-то вроде

if(args.length != 2) 
{ 
    throw new IOException(argumentDescriptionHere); 
} 
+0

Это своего рода nitpicking и просто практика, но зачем бросать исключение, которое вам нужно поймать, а не просто управлять потоком управления в 'if' (например, печатать неверное сообщение arg и выйти) – jzworkman

+0

Он определил его основная функция - выбросить исключение IO. Это проблема с IO, поэтому кажется, что целью OP является исключение, если есть проблема с IO (например, переданные аргументы). Это тоже не было бы моим подходом, но я пытаюсь дать ОП, что он хочет. – thelr

0

Вы можете сделать # 2, как это:

if (args.length < 2) 
{ 
    System.err.println("Need 2 arguments!"); 
    System.exit(-1) 
} 
+1

'System.exit (-1)' - NOooooooooooooooooooo! ;-) –

0
public static void main(String[] args) throws IOException 
{ 
    try 
    { 
     if(args == null || args.length != 2) 
     { 
      System.out.println("Invalid arguments"); 
     } 
     else{ 
      int x = Integer.parseInt(args[0]); 
      process(x, args[1]); 
     } 
    } 
    catch(NumberFormatException e) 
    { 
     System.out.println("Please enter an integer"); 
    } 


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