0

我正在尝试编写代码以将给定文本文件的所有字符(包括空格)导入单个字符串以进行分析。为此,我正在使用 Java 中的给定文件,并且在将它们放在一起时遇到了一个奇怪的错误。我根本不熟悉编码,希望得到澄清。发生的事情是在下面的代码中,当我设置

text.append(ch);

我有默认构造函数无法处理 X 抛出的异常的错误,必须定义显式构造函数;

当我设置 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

您需要将语句放在代码块中,例如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

实际上 java 中的 IO 需要 try 和 catch 块,否则它会给你错误。同样在上面的代码中,您必须将声明放在显式定义构造函数中

TextReader()
{
//----------- Your Code here.
}
于 2012-10-14T19:34:54.650 回答
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');,您的参数不再是变量或单个字符文字。您应该在该行收到编译错误。尽管您可以像单个角色一样做一些text.append('c');事情c

于 2012-10-14T19:44:16.770 回答