Какое правильное значение параметра System.getenv ("OUTPUT_PATH")? - PullRequest
0 голосов
/ 10 октября 2019

Я впервые присоединяюсь к Hackerrank . Просто для некоторых практических целей. Затем я нашел эту строку

BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

и довольно растерялся из-за правильной замены "OUTPUT_PATH". Поскольку код был скопирован в мою IDE (Eclipse), я прочитал документацию, но ни одно из зарезервированных значений не подошло. Все они бросили NPE.

Какое правильное значение параметра System.getenv("..") в моем случае?

Если вам нужен полный код:

import java.io.*;
import java.math.*;
import java.text.*;
import java.util.*;
import java.util.regex.*;
import javax.swing.JOptionPane;
public class Solution {

    /*
     * Complete the simpleArraySum function below.
     */
    static int simpleArraySum(int[] ar) {
        return 2;

    }

    private static final Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) throws IOException {
        //name − This is the name of the environment variable.
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        int arCount = Integer.parseInt(scanner.nextLine().trim());

        int[] ar = new int[arCount];

        String[] arItems = scanner.nextLine().split(" ");

        for (int arItr = 0; arItr < arCount; arItr++) {
            int arItem = Integer.parseInt(arItems[arItr].trim());
            ar[arItr] = arItem;
        }

        int result = simpleArraySum(ar);

        bufferedWriter.write(String.valueOf(result));
        bufferedWriter.newLine();

        bufferedWriter.close();
    }
}

Ответы [ 2 ]

2 голосов
/ 10 октября 2019

То, что "OUTPUT_PATH" является переменными среды. Вы должны объявить эту переменную в вашей операционной системе, чтобы использовать ее. Обычно веб-сайт, такой как хакерранк, делает это, потому что я думаю, что изучение системы там не очень хорошо для безопасности. Вы можете протестировать свой код в IDE, но переменные окружения не будут там, которые вы должны объявить. Я надеюсь, что это помогло вам за вашу путаницу.

2 голосов
/ 10 октября 2019

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

Если значение переменной передано FileWriter, это означает, что оно представляет имя файла.

Вы можете скопировать его в терминале, запустив вашу программу с командой:

env OUTPUT_PATH=/path/to/some/file java Solution

Это запустит новую оболочку, которая содержит переменную с именем OUTPUT_PATH, указывающую на файл с именем /path/to/some/file, и когдапрограмма запустится, будет использовано имя файла

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