2010-06-22 5 views
0

Я попытался запустить небольшую программу C# и java (используя VS и NetBeans не из командной строки) и напечатать значение args [0], но я получил IndexOutOfRangeException.
Я знаю, что args предназначен для передачи в параметрах командной строки, но все еще в основном методе в любом случае, Так как программа будет работать, если нет параметра args, переданного ему?Кто передал «аргументы» основному методу?

+0

Он проверяет первую длину арг массива? – HoLyVieR

ответ

5

Как работает программа, если на нее не передан параметр args? При создании программы создается новый массив и заполняется значениями из командной строки.

Если их нет (потому что вы не указали их в IDE) массив будет пустым (не равно нулю, по крайней мере, не в Java)

Yo избежать ваш IndexOutOfRangeException вы будете иметь либо не использовать аргумент, либо назначить значение по умолчанию и проверить длину массива args.

Например (в Java)

public class YourClass { 
    public static void main(String [] args) { 
      String param = "someDefault"; 
      // validate args.length 
      if(args.length > 0) { // if there is a parameter 
       param = args[0]; // use it 
      } 
      // continue with "param" already defined. 

    } 
} 
+0

поэтому он будет пустым и не пустым, поэтому программа будет работать нормально ... спасибо! –

3

Java допускает пустые массивы; т.е.

String[] args = new String[0]; 

С index >= args.length, исключение согласуется.

В этой теме, еще одно примечание: в отличие от программ C и т. Д. Arg 0 не является самой программой. Поэтому довольно часто бывает, что main(String[]) получает вызов с пустым массивом.

1

Если аргументов нет, массив будет пустым - если массив не был пройден, вместо этого у вас был бы NullReferenceException.

0

В массиве args [] есть только элементы, если вы передаете их в командной строке.

java my.test.MyTest arg1 arg2 

Это приведет к аргументам arg1 и arg2, которые передаются в массиве arg []. Если вы не передали никаких аргументов, массив arg [] равен length 0, поэтому доступ к любому индексу приведет к исключению.

0

В некоторых случаях вполне разумно не включать никаких аргументов при вызове командной строки exe. Параметр args существует, чтобы вы могли сказать, были ли переданы или нет аргументы, и если да, то каковы они были.

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