0

分析のために、特定のテキスト ファイルのすべての文字 (スペースを含む) を 1 つの文字列にインポートするコードを作成しようとしています。このためにJavaで指定されたファイルを使用していますが、まとめているときに奇妙なエラーに遭遇しました。私はコーディングにまったく慣れていないので、明確にしていただければ幸いです。何が起こるかは、以下のコードで、設定すると

text.append(ch);

Default constructor cannot handle exception throws by X, must define explicit constructor; のエラーがあります。

そして、 text.append('ch'); を設定すると

上記のエラーはなくなり、私の 'ch' 行は無効な char const を与えるだけです。エラー、「」を削除することで修正できます。

だから私はJavaから与えられたもののために明示的なコンストラクタを構築しなければならないと思います.これは必要ですか? どうすればいいのかわからないので、回りくどい解決策があればいいのですが。

import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.lang.StringBuilder;

public class TextReader //cannot place inputs/outputs of string on this line
{

StringBuilder text = new StringBuilder();
//StringBuilder google
//google end of file check java

InputStream in = new FileInputStream("charfile.txt");
Reader r = new InputStreamReader(in, "US-ASCII");
int intch;
{
while ((intch = r.read()) != -1)
{
    char ch = (char) intch;
        // ...
    text.append(ch); //if I make this a 'ch', the errors above go away, what's the problem?
}
}

}
4

3 に答える 3

0

実際、Java の IO には try と catch ブロックが必要です。そうしないと、エラーが発生します。また、上記のコードでは、宣言を明示的に定義するコンストラクターに配置する必要があります

TextReader()
{
//----------- Your Code here.
}
于 2012-10-14T19:34:54.650 に答える
0

メソッドなどのコード ブロックにステートメントを配置する必要がありますmain

public static void main(String[] args) throws IOException {
    StringBuilder text = new StringBuilder();
    // StringBuilder google
    // google end of file check java

    InputStream in = new FileInputStream("charfile.txt");
    Reader r = new InputStreamReader(in, "US-ASCII");
    int intch;
    {
        while ((intch = r.read()) != -1) {
            char ch = (char) intch;
            // ...
            text.append(ch); 
        }
    }
}

ステートメント

InputStream in = new FileInputStream("charfile.txt");
Reader r = new InputStreamReader(in, "US-ASCII");

両方とも、クラス ブロックでは発生しないチェック例外をスローします。

于 2012-10-14T19:33:52.107 に答える
0

するとtext.append(ch);、この行でエラーが発生しないはずです。予期される例外が処理またはスローされないなど、他の問題について不平を言う場合があります。

取り扱い:

    try{
    while ((intch = r.read()) != -1){
        char ch = (char) intch;
            // ...
        text.append(ch);
    }
       }catch(IOException ioex){
          ioex.printStackTace();
       }

投げた:

throws句としてメソッド宣言を変更します。

 public static void main(String[] args) throws IOException{

と言うとtext.append('ch');、引数は変数または単一文字リテラルではなくなりました。その行でコンパイルエラーが発生するはずです。1文字のようtext.append('c');に何かをすることはできますが。c

于 2012-10-14T19:44:16.770 に答える