System.getenv("OUTPUT_PATH") 的正确参数值是多少?
What's the correct parameter value of System.getenv("OUTPUT_PATH")?
我是第一次加入 Hackerrank。只是为了一些练习目的。
然后,我找到了这一行
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
并且很困惑什么是 "OUTPUT_PATH"
的正确替代品。因为代码被复制到我的 IDE (Eclipse) 我阅读了文档但是 none 的保留值适合。他们都投了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();
}
}
正如我在评论中所说,您不应该替换它。这是 shell 中用于 运行 您的解决方案的环境变量。
看到变量的值被传递给了FileWriter
,这意味着它代表了一个文件的名称。
您可以通过使用以下命令运行在您的程序中复制它:
env OUTPUT_PATH=/path/to/some/file java Solution
这将启动一个新的 shell,其中包含一个名为 OUTPUT_PATH
的变量,指向一个名为 /path/to/some/file
的文件,当程序启动时,将使用该文件名
那"OUTPUT_PATH"是一个环境变量。您必须在操作系统中声明该变量才能使用它。通常像 hackerrank 这样的网站这样做是因为我猜学习那里系统的路径对安全性不利。您可以在 IDE 中测试您的代码,但您不需要声明环境变量。希望对你的困惑有所帮助。
我知道这个问题有点老了,但也许有人会从这个答案中受益...
这一行:
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
读取 Hackerrank runtime/testing 环境中定义的环境变量以确定存储结果以供进一步分析的位置。
为了使用完全相同的代码,你必须在你的系统上创建这个变量并使用它,或者更改以将结果存储在不同的地方(因为它已经在以前的答案和评论中解释过)。
但是,...
由于这是用于 Hackerrank 求解,我认为最好将所有输出重定向到 system.out 而不是文件,因为在运行时(或调试)查看结果更有用IDE 控制台,而不是将其放在文件中。
所以,这一行最好改成这样:
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
这会将您的 BufferedReader 流式传输到 System.out。
在那种情况下,您将获得与 Hackerrank 测试用例相同的输出,但在您的 IDE 控制台而不是文件中。
这个问题已经有了正确的解释。如果您的 IDE 是 IntelliJ IDEA,我只是添加您可以简单使用的步骤。
第一步:当你运行任何main class in IDE时,你可以看到会有一个选项叫做Edit Configurations
像这样
第 2 步:单击“编辑配置”。单击时,您将看到此内容。
第 3 步: 单击上图中圈出的 3 个点。单击时,您将看到此内容。
第 4 步: 单击 + 符号(如图中圈出的部分)并添加这些环境变量,如图所示。完成后单击 应用按钮 ,您应该可以 运行 您的程序了。
这与 Hackerrank 环境没有什么不同。希望这有帮助。
在Eclipse中你可以设置如下所示的环境变量:
- 右键单击 Java 文件。并且,您将获得如下所示的 Eclipse 上下文菜单。点击运行配置。
- 在新开的window。单击环境选项卡。在这里您可以添加环境变量和您选择的值,如下图所示。关闭这个 window.
- 再次右键单击 java 代码,单击 运行,然后单击 运行 作为 Java 应用程序。
我是第一次加入 Hackerrank。只是为了一些练习目的。 然后,我找到了这一行
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
并且很困惑什么是 "OUTPUT_PATH"
的正确替代品。因为代码被复制到我的 IDE (Eclipse) 我阅读了文档但是 none 的保留值适合。他们都投了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();
}
}
正如我在评论中所说,您不应该替换它。这是 shell 中用于 运行 您的解决方案的环境变量。
看到变量的值被传递给了FileWriter
,这意味着它代表了一个文件的名称。
您可以通过使用以下命令运行在您的程序中复制它:
env OUTPUT_PATH=/path/to/some/file java Solution
这将启动一个新的 shell,其中包含一个名为 OUTPUT_PATH
的变量,指向一个名为 /path/to/some/file
的文件,当程序启动时,将使用该文件名
那"OUTPUT_PATH"是一个环境变量。您必须在操作系统中声明该变量才能使用它。通常像 hackerrank 这样的网站这样做是因为我猜学习那里系统的路径对安全性不利。您可以在 IDE 中测试您的代码,但您不需要声明环境变量。希望对你的困惑有所帮助。
我知道这个问题有点老了,但也许有人会从这个答案中受益...
这一行:
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
读取 Hackerrank runtime/testing 环境中定义的环境变量以确定存储结果以供进一步分析的位置。
为了使用完全相同的代码,你必须在你的系统上创建这个变量并使用它,或者更改以将结果存储在不同的地方(因为它已经在以前的答案和评论中解释过)。
但是,...
由于这是用于 Hackerrank 求解,我认为最好将所有输出重定向到 system.out 而不是文件,因为在运行时(或调试)查看结果更有用IDE 控制台,而不是将其放在文件中。
所以,这一行最好改成这样:
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
这会将您的 BufferedReader 流式传输到 System.out。
在那种情况下,您将获得与 Hackerrank 测试用例相同的输出,但在您的 IDE 控制台而不是文件中。
这个问题已经有了正确的解释。如果您的 IDE 是 IntelliJ IDEA,我只是添加您可以简单使用的步骤。
第一步:当你运行任何main class in IDE时,你可以看到会有一个选项叫做Edit Configurations
像这样
第 2 步:单击“编辑配置”。单击时,您将看到此内容。
第 3 步: 单击上图中圈出的 3 个点。单击时,您将看到此内容。
第 4 步: 单击 + 符号(如图中圈出的部分)并添加这些环境变量,如图所示。完成后单击 应用按钮 ,您应该可以 运行 您的程序了。
这与 Hackerrank 环境没有什么不同。希望这有帮助。
在Eclipse中你可以设置如下所示的环境变量:
- 右键单击 Java 文件。并且,您将获得如下所示的 Eclipse 上下文菜单。点击运行配置。
- 在新开的window。单击环境选项卡。在这里您可以添加环境变量和您选择的值,如下图所示。关闭这个 window.
- 再次右键单击 java 代码,单击 运行,然后单击 运行 作为 Java 应用程序。