我第一次加入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();
}
}
正如我在评论中所说,您不应替换它。这是外壳程序中用于运行解决方案的环境变量。
[将变量的值传递给FileWriter
,这意味着它代表文件名。
您可以通过使用以下命令运行程序来在终端中复制它:
env OUTPUT_PATH=/path/to/some/file java Solution
这将启动一个新的外壳,其中包含一个名为OUTPUT_PATH
的变量,该变量指向名为/path/to/some/file
的文件,并且在程序启动时,将使用该文件名
即“ OUTPUT_PATH”是环境变量。您必须在操作系统中声明该变量才能使用它。通常,像hackerrank这样的网站都这样做,因为我猜想学习那里系统的路径不利于安全。您可以在IDE中测试代码,但是环境变量不在您需要声明的位置。希望它对您的困惑有所帮助。