1

テキストファイルをJavaプログラムにパイプしています。これは、テキスト ファイル「input.txt」が保持するものです。

4
5

つまり、数字の 4 と 5 が別々の行に並んでいます。プログラムにそれらの数字を読み取らせて出力させたいのです。このコードは動作するはずです:

public class readFile { 
  public static void main(String[] args) { 

    while (!StdIn.isEmpty()) {
      System.out.println( StdIn.readInt() );
    }
  }
}

しかし、DrJavaで次のことを行うと:

run readFile < input.txt

わからない

4
5

しかし、数字を印刷する代わりに、入力を求めるボックスが表示されます: http://oi50.tinypic.com/3585kxc.jpg

私は何を間違っていますか?

4

4 に答える 4

1

これは非常に古い作業方法です。Java では、ファイル システムからファイルを読み取ることができます。以下は、ファイル システムからファイルを読み取り、ファイル内のすべての文字列のリストを返すメソッドの簡単な例です (存在しないファイルはチェックしませんが、自分で追加できます)。

輸入品:

import java.util.List;
import java.io.IOException;
import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;

関数:

public List<String> readFile(String filePath) throws IOException {
    List<String> result = new ArrayList<String>();
    try {
       FileInputStream streamer = new FileInputStream(filePath);
       InputStreamReader streamReader = new InputStreamReader(streamer);
       BufferedReader reader = new BufferedReader(streamReader);
       String line;
       while ((line = reader.readLine()) != null) {
           result.add(line.replace("\n", ""));
       }
    }
    catch(Exception e){
        e.printStackTrace();
    }

    return result;
}

したがって、ファイルへのパスである引数を取り、それを読み取る Java プログラムを作成できます。その後、リストから文字列を印刷できます

于 2016-02-02T19:18:07.933 に答える
0

DrJava にリダイレクトしようとしたテキスト ファイルは次のとおりです。

Q1.txt

10
8 0
5 2
6 0
6 4
9 6
9 5

Dos コマンドラインから次のように入力しました。

C:\Users\USER\algs4\Week1>java QuickFindUF < Q1.txt

これにより、次のエラーが発生しました。

Exception in thread "main" java.lang.NoClassDefFoundError: edu/princeton/cs/algs
4/StdIn
        at QuickFindUF.main(QuickFindUF.java:172)
Caused by: java.lang.ClassNotFoundException: edu.princeton.cs.algs4.StdIn
        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

下部にあるDrJavaの「相互作用」ダイアログボックスで同じコマンドを入力すると、同じ結果が得られました。

コマンドラインの後に直接入力して、コマンドラインからパイプしようとしました:

10
8
0
...
^z

DrJavaで同じことをするときは^D(ctrl + D)が必要なようです

最終的に、java-algs4.bat を使用することが解決策になる可能性があるという予感がしました。

..\bin\java-algs4.bat QuickFindUF < Q1.txt

これは、Windows で DOS コマンド ラインから実行する方法です。

これが日食でもどのように行われるかを理解できることを嬉しく思います

于 2016-02-02T19:04:45.413 に答える