аргументы main () в Java - PullRequest
       22

аргументы main () в Java

4 голосов
/ 11 марта 2011

Я пытаюсь написать код для программы, которая получает строки в качестве входных данных.Программа печатает «Ошибка», когда пользователь не помещает никаких данных, в противном случае она печатает первый строковый аргумент.

Правильно ли ссылаться на отсутствие данных как «ноль»?Это не работает.что мне вместо этого написать?

public class Try {
public static void main(String[] args){
    if (args[0]==null){
        System.out.println("Error- please type a string");
    }else {System.out.println(args[0]);}

    }
}

Ответы [ 5 ]

11 голосов
/ 11 марта 2011

Аргументы никогда не будут null, если они существуют в первую очередь - чтобы проверить это, вы должны использовать args.length вместо:

if (args.length == 0) {
  ...
} else {
  ...
}
3 голосов
/ 11 марта 2011

вы можете проверить значение атрибута args "length", если значение равно 0, что означает, что пользователь не помещает никаких данных

public class Try {
public static void main(String[] args){
    if (args.length == 0) {
        System.out.println("Error- please type a string");
    } else {
        System.out.println(args[0]);
    }
}
3 голосов
/ 11 марта 2011

Не совсем - вы хотите args.length==0:

if (args.length==0){
    System.out.println("Error- please type a string");
}
else {
    System.out.println(args[0]);
}

С вашим текущим кодом будет возникать исключение, если аргумента нет, так как массив будет иметь длину 0 и доступ к любомуэлемент, таким образом, выбросит IndexOutOfBoundsException.

2 голосов
/ 11 марта 2011

Похоже, это вызывается из командной строки. Если пользователь не предоставит никаких аргументов, то args будет иметь длину 0, поэтому args[0] будет ошибкой индекса за пределами границ. Вместо проверки нуля вы хотите проверить длину args.

1 голос
/ 11 марта 2011

Вы хотите проверить, если args.length равно 0.

...