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

时间:2019-10-10 09:10:40

标签: java bufferedreader

我是第一次加入 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();
    }
}

5 个答案:

答案 0 :(得分:2)

正如我在评论中所说,您不应替换它。这是外壳程序中用于运行解决方案的环境变量。

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

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

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

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

答案 1 :(得分:2)

表示“ OUTPUT_PATH”是环境变量。您必须在操作系统中声明该变量才能使用它。通常,像hackerrank这样的网站都这样做,因为我猜想学习那里系统的路径不利于安全。您可以在IDE中测试代码,但是环境变量不在您需要声明的位置。希望它对您的困惑有所帮助。

答案 2 :(得分:2)

在Eclipse中,您可以设置环境变量,如下所示:

  1. 右键单击Java文件。并且,您将获得如下所示的Eclipse上下文菜单。单击运行配置。

enter image description here

  1. 在新打开的窗口中。单击环境选项卡。您可以在此处添加环境变量和您选择的值,如下图所示。关闭此窗口。

enter image description here

  1. 再次右键单击Java代码,单击“运行”,然后单击“以Java应用程序身份运行”。

答案 3 :(得分:1)

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

此行:

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

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

为了使用完全相同的代码,您必须在系统上创建并使用此变量,或者更改以将结果存储在不同的位置(如先前的答案和注释中已经解释过的那样)。

但是,...

由于这是用于Hackerrank解决方案的,所以我认为最好将所有输出重定向到system.out而不是文件,因为在IDE控制台中查看运行时(或调试)的结果要有用得多,而不是而不是将其放置在文件中。

因此,最好以这种方式更改此行:

BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));

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

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

答案 4 :(得分:1)

该问题已得到适当说明的答案。我只是添加了一些步骤,如果您的 IDE是IntelliJ IDEA ,则可以简单地使用这些步骤。

步骤1:在IDE中运行任何主类时,您会看到会有一个名为Edit Configurations的选项

Edit Configurations

步骤2:单击“编辑配置”。单击后,您将看到此信息。

Environment-Variable

步骤3:单击上图中圈出的3个点。单击后,您将看到此信息。

OUTPUT_PATH

步骤4:单击+符号(如图中圆圈所示),然后添加这些环境变量,如图所示。完成后,点击应用按钮,您应该可以很好地运行程序。

这与 Hackerrank 环境没有什么不同。希望这会有所帮助。