3

「args [0]」ランダムダブルを出力するクラスRandomSeqと、StdInの平均を出力するクラスAverageがあります。コードの記述とコンパイルに DrJava を使用しています。StdIn と out ライブラリをダウンロードし、クラスの同じフォルダーに配置しました。私はJavaを学んでいます。

最初の問題は、DrJava の「相互作用」セクションにあります。テキスト ファイルを作成する代わりに書き込むjava RandomSeq 10 > data.txtと、出力が出力されます。なんで?
次に、Windows コマンド ラインで同じコマンドを入力しました。txtファイルが正常に作成されました。

次に、RandomSeq 10 の出力を Average の入力にパイプします。DrJavajava RandomSeq 10 | java Average の Interactions セクションに書き込むと、おかしな動作が発生します。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);
    }
}
4

2 に答える 2

1

これはStdIn に関する関連する質問ですStdInコースで提供されているプリンストンコースに従っていると述べたように、標準のJavaライブラリではありません。StdIn.javaおそらく、ファイルを生成するStdIn.javaコマンドを使用してコンパイルする必要があります。(第二号)javac StdIn.javaStdIn.classClass not Found Exception

あなたが DrJava で書いている問題についてはjava RandomSeq 10 > data.txt(DrJava が IDE であることに気づかず、本だと思っていたので説明を求めました)、Interactionsセクションがプログラムに直接入力を与える可能性が最も高いため、合格することを意味します。args[]あなたのmain機能に関してそこに入力したものは何でも。

コードを呼び出すため、出力が出力されsystem.out.printlnます。DrJava はその出力を取得して画面に出力するだけで、data.txtファイルにパイプしません。コマンドラインでプログラムと対話するためにパイプなどを必要とするコース資料を使用しているため、それをお勧めします。

最後java RandomSeq 10 | java Averageに、実行java RandomSeq 10してからその出力を に取り込むjava Averageのと同じです.2番目のコマンドは実行するのと同じですjava Average < data.txt.エラーは、パイプの方法が原因ではなく、コンパイルされたファイルStdInとして存在しないためです..class

于 2015-06-23T16:06:49.140 に答える