Передача файла из командной строки Java - PullRequest
0 голосов
/ 14 апреля 2020

Итак, у меня есть файл целых чисел, по одному в каждой строке, и я хочу передать файл в качестве ввода через args [0] из командной строки. Когда я пишу в командной строке java Сортировка input.txt, я просто получаю «input.txt». Но когда я пишу java Сортировка 3 2 6, я правильно получаю 2 3 6. Как я должен передать файл? Код ниже:

import java.util.Arrays;
public class Sorting {
public static void main (String args[])
{


    Arrays.sort(args);
    for(String num: args)
        System.out.println(num);
}

}

1 Ответ

0 голосов
/ 14 апреля 2020

args[] - это просто список аргументов - если вы передаете файл, имя файла является аргументом.

Не запускайте это, но попробуйте что-то вроде:


public static void main (String args[])
{

    String filename = args[0];

    // Read the file content to a String
    String fileContent = Files.readString(Paths.get(filename));

    // Split on whitespace (this is a regex, whitespace is \\s in Java - could also use " " for just space)
    // The '+' here denotes "at least 1" whitespace character - added after the discussion below
    String[] elements = fileContent.split("\\s+");
    Arrays.sort(elements);

    for(String num: args)
        System.out.println(num);
}

== Редактировать ==

Если вы хотите, чтобы они сортировались как целые числа, то вы правильно сказали, что приведенное выше обрабатывает их как String с. Вам нужно проанализировать их как Int для этого:

publi c stati c void main (String args []) {

    String filename = args[0];

    // Read the file content to a String
    String fileContent = Files.readString(Paths.get(filename));

    // Split on whitespace (this is a regex, whitespace is \\s in Java - could also use " " for just space)
    // The '+' here denotes "at least 1" whitespace character - added after the discussion below
    String[] elements = fileContent.split("\\s+");
    int[] intElements = new int[elements.length];
    for (int i = 0; i < elements.length; i ++) {
        try {
            intElements[i] = Integer.parseInt(elements[i]);
        } catch (NumberFormatException ex) {
            System.err.println("Not a number: " + elements[i]);
        }
    }
    Arrays.sort(intElements);

    for(int num: intElements)
        System.out.println(num);

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...