我是java的初学者,参加了由普林斯顿提供的课程 Algorithm 。我在第1章的第40页停留在重定向和管道。
我使用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
该计划不起作用。所以我认为符号&gt;和&lt;可以在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中有一些整数。
然而,这个执行并没有读取两个txts。
答案 0 :(得分:0)
也许不使用nppexec直接从cmd运行它? 编译javac .java并运行它java&lt; data.txt中
答案 1 :(得分:0)
遗憾的是,你没有准确地说出你想要做的事情。
您编写的内容应该为程序java
提供文件data.txt
的输入。很可能java
忽略输入,因为它具有从剩余参数中获得的所有信息。
如果你想提供data.txt
作为的任何java程序的输入,那么尝试使用^<
告诉cmd
<
是数据,而不是cmd
的指令。
如果这不起作用,那么你需要进一步解释你想要做的事情。