2016-01-24 77 views
1

我是java的初学者,参加了课程算法,它由普林斯顿提供。我被困在重定向和管道 40页的第1章重定向和管道

我用notepadd ++与nppexec运行Java,而我的执行所写成

NPP_SAVE 
javac -encoding UTF-8 "$(FULL_CURRENT_PATH)" 
echo 
echo ==========编译成功后开始运行========== 
java -cp "$(CURRENT_DIRECTORY);D:\Program Files\java\jdk\lib\algs4.jar" "$(NAME_PART)" 

然而,当我使用重定向符号>和<如

NPP_SAVE 
javac -encoding UTF-8 "$(FULL_CURRENT_PATH)" 
echo 
echo ==========编译成功后开始运行========== 
java -cp "$(CURRENT_DIRECTORY);D:\Program Files\java\jdk\lib\algs4.jar" "$(NAME_PART)" largeW.txt < largeT.txt 

程序不起作用。所以我认为符号>和<可能在cmd中使用,我想知道如何使用nppexec重定向。

任何建议是有帮助的。谢谢。


这个例子是从书第9页:

import edu.princeton.cs.algs4.*; 
import java.util.*; 

public class BinarySearch 
{ 
    public static int rank(int key, int[] a) 
    { 
     int lo = 0; 
     int hi = a.length - 1; 
     while (lo <= hi) 
     { 
      int mid = lo + (hi - lo)/2; 
      if  (key < a[mid]) hi = mid - 1; 
      else if (key > a[mid]) lo = mid + 1; 
      else return mid; 
     } 
     return -1; 
    } 

    public static void main(String[] args) 
    { 
     In in = new In("G:\\java\\1.1\\binarysearch\\BinarySearch.txt"); 
     int[] whitelist = in.readAllInts(); 
     Arrays.sort(whitelist); 

     while (!StdIn.isEmpty()) 
     { 
      int key = StdIn.readInt();    
      if (BinarySearch.rank(key, whitelist)!= -1)    StdOut.println("here it is\n"); 
      else            StdOut.println("where it is\n"); 
     } 
    } 
    } 

执行nppexec的是

NPP_SAVE 
javac -encoding UTF-8 "$(FULL_CURRENT_PATH)" 
echo 
echo ==========编译成功后开始运行========== 
java -cp "$(CURRENT_DIRECTORY);D:\Program Files\java\jdk\lib\algs4.jar" "$(NAME_PART)" largeW.txt < largeT.txt 

的largeW.txt和largeT.txt有一些整数在其中。

但是这个执行不会读取两个txt。

回答

0

遗憾的是,您并没有明确地说出您正在尝试执行的操作。

你写的东西应该提供的程序java的输入来自文件data.txt。很有可能,java会忽略输入,因为它具有其余参数所需的全部信息。

如果你要提供data.txt作为输入任何的Java程序是然后尝试使用^<告诉cmd<是数据,而不是一个cmd指令。

如果这不起作用,那么你需要进一步解释你正在尝试做什么。

+0

我会完成我的问题。感谢您指出这一点。 – gaoxinge

0

也许不用nppexec直接从cmd运行它? 编译javac .java并运行它java < data.txt

+0

其实我已经使用cmd来运行重定向,例如< and >,并且没有问题。我想如何使用nppexec来实现这... – gaoxinge

+0

为什么你只是从命令行运行它 – redFIVE

+0

@redFIVE e ...我不知道你是什么意思......我认为命令行是在“ $(NAME_PART)“... – gaoxinge