Java - Как я могу вызвать метод, используя args []? - PullRequest
2 голосов
/ 06 ноября 2019

Проблема: я не знаю, как правильно вызывать метод, как предписывает мне присвоение.

Цель: в методе main вызвать метод readFile с первым аргументом командной строки (args[0]), затем вызовите метод writeFile со вторым аргументом командной строки (args[1]).

Что я пробовал:

public static void main(String[] args)
{
    if(args.length == 0)
    {
        inputFile = FileIO(args[0]);
    }
    if(args.length == 1)
    {
        outputFile = FileIO(args[1]);
    }
}

Код для работы с:

public class FileIO {

    public void readFile(String inputFile)
    {

    }

    public void writeFile(String outputFile) 
    {

    }

    public static void main(String[] args)
    {

    }
}

Ошибка:

Несколько маркеров в этой строке
-inputFile не может быть преобразован в переменную
- Метод FileIO (String) не определен для типаFileIO

1 Ответ

1 голос
/ 06 ноября 2019

Я не хочу выполнять задание за вас, но могу дать вам подсказки, которые должны позволить вам продвинуться дальше.

Сначала, в связи с ошибками, которые вы получаете, вы должны объявить типы переменныхв Java, поэтому вместо того, чтобы просто сказать

inputFile = FileIO(args[0])

, вы должны объявить тип этой переменной. Я не уверен, что FileIO() возвращает, но если это File объект, вам нужно объявить

File inputFile = FileIO(args[0])

Без этого компилятор не знает, что такое inputFileи выдает эту ошибку.

Далее вам сообщают, что FileIO(String) не является функцией. FileIO - это просто класс, но вы забыли указать, какую функцию в классе вы хотите использовать. Я ожидаю, что вы хотели использовать FileIO.readfile(args[0]) например. Неясно, является ли ваш первый main реализацией main в FileIO или отдельным файлом, в котором просто используется FileIO, поэтому мне нужно узнать больше, чтобы углубиться в детали. Обратите внимание, что у вас должен быть экземпляр класса (созданный с использованием new FileIO(), если вы собираетесь вызывать нестатические методы в нем.

Наконец, вам необходимо понять концепцию массивов, начинающихся с нуля. Массивс одним элементом array.length скажет 1, но вы найдете значение по индексу array[0]. Например:

String[] args = ["a","b"];
args.length;  // This is 2
args[0];      // This is "a"
args[1];      // This is "b"

Таким образом, последний элемент всегда имеет индекс array.length-1.

Когда вы говорите if(args.length == 0), вы действительно спрашиваете, является ли массив пустым.

...