System.getenv("OUTPUT_PATH") 的正确参数值是多少?

Pla*_*one 8 java bufferedreader

我是第一次加入Hackerrank。只是为了一些练习目的。然后,我找到了这条线

BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
Run Code Online (Sandbox Code Playgroud)

并且很困惑什么是"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();
    }
}
Run Code Online (Sandbox Code Playgroud)

Bos*_*jin 13

我知道这个问题有点老了,但也许有人会从这个答案中受益......

这一行:

BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
Run Code Online (Sandbox Code Playgroud)

读取 Hackerrank 运行时/测试环境中定义的环境变量,以确定将存储结果以供进一步分析的位置。

为了使用完全相同的代码,您必须在您的系统上创建这个变量并使用它,或者更改为将结果存储在不同的地方(因为它已经在之前的答案和评论中进行了解释)。

但, ...

由于这是用于 Hackerrank 求解,我认为最好将所有输出重定向到 system.out 而不是文件,因为在 IDE 控制台中查看运行时(或调试)结果比放置它更有用在一个文件中。

所以,这条线最好以这种方式改变:

BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
Run Code Online (Sandbox Code Playgroud)

这会将您的 BufferedReader 流式传输到 System.out。

在这种情况下,您将获得与 Hackerrank 测试用例相同的输出,但在您的 IDE 控制台中而不是在文件中。


sma*_*c89 3

正如我在评论中所说,你不应该更换它。这是 shell 中用于运行解决方案的环境变量。

看到变量的值被传递给FileWriter,这意味着它代表一个文件的名称。

您可以通过使用以下命令运行程序来在终端中复制它:

env OUTPUT_PATH=/path/to/some/file java Solution
Run Code Online (Sandbox Code Playgroud)

这将启动一个新的 shell,其中包含一个名为 的变量,该变量OUTPUT_PATH指向一个名为 的文件/path/to/some/file,当程序启动时,将使用该文件名