powershell '<' 运算符保留供将来在 Java 中使用

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 操作系统上运行原始代码。

任何帮助表示赞赏,谢谢。

Bur*_*ris 9

您是否尝试过在重定向前加上--%操作符?例如:

   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 可以处理<重定向。

这样你就不需要命令脚本了。