我已经阅读了很多关于这个问题的答案,但没有发现两个文件之间的比较,实际上这是基于 BinarySearch 算法一书的样本>,这是源代码
import java.util.Arrays;
import edu.princeton.cs.algs4.*;
public class prac1_1_23{
public static boolean BinaryLookup(int key, int[] arr) {
int low = 0;
int high = arr.length - 1;
while(low <= high) {
int mid = low + ((high - low) >> 1);
if(key < arr[mid])
high = mid - 1;
else if(key > arr[mid])
low = mid + 1;
else
return true;
}
return false;
}
public static void main(String[] args) {
char symbol = '-';
int[] whitelist = new In(args[0]).readAllInts();
Arrays.sort(whitelist);
while(!StdIn.isEmpty()) {
int key = StdIn.readInt();
boolean found = BinaryLookup(key, whitelist);
if('+' == symbol && !found)
StdOut.println(key);
if('-' == symbol && found)
StdOut.println(key);
}
}
}
此示例使用了本书作者制作的库,可以通过Algorithms访问该库,问题是当我想通过Windows的 PowerShell 运行此程序时,像命令
java prac1_1_23 largeW.txt < largeT.txt
我遇到了类似的问题 error
实际上我找到了运行此代码的解决方案,但在PowerShell上解决它无用,这需要我使用本书作者编写的命令行程序,该程序可以在&#34; algs4.cs的网站上下载.princeton.edu / windows /&#34;,它需要使用命令行编译和运行程序,如
javac-algs4 prac1_1_23.java //compile command
java-algs4 prac1_1_23 largeW.txt < largeT.txt //run command
它确实有效,但我想知道我们是否可以利用原来的CLI,因为我发现有人可以在Linux操作系统上运行原始代码而没有问题。
感谢任何帮助,谢谢。
答案 0 :(得分:3)
您是否尝试使用--%
运算符为重定向添加前缀?例如:
cmd /c --% java prac1_1_23 largeW.txt < largeT.txt
上面的命令在命令前面加上三件事,让我解释一下:
cmd
调用cmd.exe,它知道你的意思<
/c
告诉cmd.exe在命令行后面处理一个命令,然后退出。
--%
告诉PowerShell单独保留命令行的其余部分,以便cmd.exe可以处理<
重定向。
这样您就不需要命令脚本了。
答案 1 :(得分:1)
这是一个PowerShell问题,如The '<' operator is reserved for future use (PowerShell)中所述。
如第一个答案所述,您可以像这样运行命令;
Get-Content largeT.txt | java prac1_1_23 largeW.txt
查看有关在powershell中重定向输入的其他方法的其他答案。