Lan*_*mes 3 java algorithm powershell
我已经阅读了很多关于这个问题的答案,但没有发现关于两个文件之间的比较,实际上这是Algorithms based on 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个示例利用了本书作者制作的一个库,可以通过Algorithms访问,问题是我什么时候想通过windows的PowerShell运行这个程序,比如命令
java prac1_1_23 largeW.txt < largeT.txt
Run Code Online (Sandbox Code Playgroud)
我遇到了类似错误的问题
实际上我找到了一个解决方案来运行这段代码,但是在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
Run Code Online (Sandbox Code Playgroud)
它确实有效,但我想知道我们是否可以使用原始 CLI,因为我发现有人可以毫无问题地在 Linux 操作系统上运行原始代码。
任何帮助表示赞赏,谢谢。
您是否尝试过在重定向前加上--%操作符?例如:
cmd /c --% java prac1_1_23 largeW.txt < largeT.txt
Run Code Online (Sandbox Code Playgroud)
上面的命令在你的命令前面加上了三件事,让我解释一下:
cmd 调用 cmd.exe,它知道你的意思 <
/c 告诉 cmd.exe 处理命令行上的一个命令,然后退出。
--%告诉 PowerShell 保留命令行的其余部分,以便 cmd.exe 可以处理<重定向。
这样你就不需要命令脚本了。