Откуда берется условие args.length >= 2

Делаю практические задания к учебнику Хорсмана и не могу понять, откуда берется условие в операторе if (args.length >= 2)

public static void main(String[] args) {
    LocalDate date = LocalDate.now().withDayOfMonth(1);
    int month;
    if (args.length >= 2) {
        month = Integer.parseInt(args[0]);
        int year = Integer.parseInt(args[1]);
        date = LocalDate.of(year, month, 1);
    }
}

Ответы (3 шт):

Автор решения: Igor

Оно берется из знания программиста о том, с каким ожидаемым количеством параметров должна запускаться программа. Обратите внимание на обращения args[0] и args[1] внутри блока if. Чтобы в этих обращениях не получить ошибку "index out of range", длина массива должна быть как минимум 2.


Вы поняли неправильно. Длина массива это количество параметров в командной строке.

program.exe 10 abcd 2.34
  • args.length будет 3.
→ Ссылка
Автор решения: Leviathan_ZC

Я так понимаю, это Java.

public static void main(String[] args) <- "String[] args" - это аргументы командной строки.

К примеру, т.к. вы изучаете Java, то хорошим примером послужит компиляция. Изначально, для компиляции файла .java в файл .class вам стоит воспользоваться java компилятором. Он входит в состав JDK - Java Development Kit.

Чтобы его вызывать, в командной строке следует написать javac. Но сам по себе компилятор нужен только лишь для преобразования из человекопонятного кода в машиннопонятный. Поэтому нам нужно явно ему указать, какой файл компилировать. Для этого нужно передать название файла .java как аргумент. Как пример названия файла я взял "Example.java"

javac Example.java 

В данном случае "Example.java" является аргументом, который мы передали в программу.

Для этого нужен "String[] args"

Если вы изучали уже массивы, то здесь явно указано, что аргументами программы явлется массив строк. И каждая строка, входящая в этот массив может являться определенным аргументом для работы программы. Аргументы для определения конкретного поведения программы. Для четкого понимания этого советую прочитать про Command Line Pattern.

Т.к. в вашу программу передается массив с названием args, то у него имеется все стандартные поля/поведения массива.

Ну и в вашем случае args.length - извлекает количество строк из массива аргументов.

А условие (args.length >=2) позволяет понять, что если вы ввели в аргументы вашей программы более одного аргумента, значит она будет действовать соответственно. В вашем примере, если аргументов два или более, значит, вы, как разработчик данной программы, определили, что ,в таком случае, за первый аргумент отвечает номер месяца в календаре, а второй - за год. И, соответственно, начинаете парсить эти значения, переводя их из строковых типов в числовые.

→ Ссылка
Автор решения: Ilya Yarets

Можно вызвать с помощью ALT + SHIFT + F10.

Ввод аргументов через пробел.

введите сюда описание изображения

→ Ссылка