gpt4 book ai didi

java - 管道java程序出错

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:03 25 4
gpt4 key购买 nike

我有一个打印“args[0]”随机 double 的 RandomSeq 类和一个打印 StdIn 平均值的 Average 类。我正在使用 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);
}
}

最佳答案

StdIn不是来自内置的 Java 库。它是包含在 stdlib.jar 中的第 3 方库的一部分。可从 here 下载的文件.

JAR 的路径文件必须在 -CLASSPATH 中命令行选项 javacjava调用。 this page使用标准库部分向您展示如何做到这一点; -cp option 只是 -CLASSPATH 的简写.学习如何将库放入您的 CLASSPATH 很重要,因为您最终会一直用 Java 来做这件事。

你的 Average.java代码还必须 import StdIn类(class)。自 StdIn不驻留在命名包中,您只需说 import StdIn;在代码的顶部。

或者,您可以只使用 System.in ,而不是这个图书馆。您可能还需要一个更高级别的流构造。 Here's a nice example .

关于java - 管道java程序出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31007746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com