我已经阅读了很多关于这个问题的答案,但是没有找到关于两个文件之间的比较,实际上这是Algorithms一书的示例,基于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 上无法解决它,这需要我使用本书作者编写的命令行程序,可以在“algs4.cs.princeton”网站上下载。 edu/windows/”,它需要用像
这样的命令行编译和运行程序javac-algs4 prac1_1_23.java //compile command
java-algs4 prac1_1_23 largeW.txt < largeT.txt //run command
它确实有效,但我想知道我们是否可以使用原始 CLI,因为我发现有人可以在 Linux 操作系统上毫无问题地运行原始代码。
感谢任何帮助,谢谢。
最佳答案
您是否尝试过在重定向前加上 --%
前缀?运算符(operator)?例如:
cmd /c --% java prac1_1_23 largeW.txt < largeT.txt
上面的命令为你的命令加上了三个前缀,让我来解释一下:
cmd
调用 cmd.exe,它知道<
是什么意思/c
告诉 cmd.exe 处理命令行上的一个命令,然后退出。--%
告诉 PowerShell 单独保留命令行的其余部分,以便 cmd.exe 可以处理<
重定向。
这样你就不需要命令脚本了。
关于java - powershell '<' 运算符保留供以后在 Java 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39503642/