2016-01-24 90 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