我有一个 RandomSeq 类,它打印“args [0]”随机双精度数和一个平均类,它打印 StdIn 的平均值。我正在使用 DrJava 编写代码和编译。我已经下载了 StdIn 和 out 库并将它们放在我的类的同一个文件夹中。我正在学习Java。
第一个问题在 DrJava 的“交互”部分。当我编写java RandomSeq 10 > data.txt
而不是创建文本文件时,它会打印输出。为什么?
然后我在 Windows 命令行中输入了相同的命令。它成功创建了txt文件。
现在我想将 RandomSeq 10 的输出通过管道传输到 Average 的输入。写java RandomSeq 10 | java Average
在 DrJava 的交互部分会导致有趣的行为。在 cmd 中写入会打印以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: StdIn
at Average.main(Average.java:7)
Caused by: java.lang.ClassNotFoundException: StdIn
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
甚至java Average < data.txt
显示相同的错误。为什么?
public class RandomSeq
{
public static void main(String[] args)
{
int N = Integer.parseInt(args[0]);
for (int i = 0; i < N; i++)
{
System.out.println(Math.random());
}
}
}
public class Average
{
public static void main(String [] args)
{
double S = 0;
int i = 0;
while (!StdIn.isEmpty())
{
double n = StdIn.readDouble();
S += n;
i++;
}
S = S/i;
//StdOut.printf("The mean is %.3f", S);
StdOut.println(S);
}
}