将字符追加到字符串中

时间:2012-10-14 19:28:34

标签: java file text input char

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

时会发生什么

text.append(CH);

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

当我设置text.append('ch');

上面的错误消失了,我的'ch'行只给出了无效的char const。错误,可以通过删除's来修复。

所以我认为我必须为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?
}
}

}

3 个答案:

答案 0 :(得分: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");

两者都抛出在类块中不会发生的已检查异常。

答案 1 :(得分:0)

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

TextReader()
{
//----------- Your Code here.
}

答案 2 :(得分: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是一个字符。