2012-10-14 135 views
0

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

text.append(ch);

我有Default的构造函数的错误,不能处理X引发的异常,必须定义显式的构造函数;

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

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

所以我认为我必须为我的Java的Givens构造一个显式构造函数,这是否有必要?由于我不知道如何去做,所以最好有一个迂回的解决方案。

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? 
} 
} 

} 
+0

不,这不是问题 –

+1

什么?如果你有'ch',它不应该让错误消失。你能解释得更好吗? –

+0

好吧,如果我使它'ch'我认为java侧重于更明显的错误。 当ch为'ch'时,字符串中唯一的错误是'ch'不是有效常量的错误字符 – Sukwoo

回答

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"); 

两个罚球检查不能在类块发生异常。

+0

嗯,我想我忽略了这一点。 如果我只是想用它作为一个方法从另一个主要方法调用另一个忽略整个项目的文件,这仍然是真的吗? – Sukwoo

+0

不知道我得到你的问题,但任何声明抛出异常或非声明式语句应该出现在代码块中。 – Reimeus

0

其实java中的IO需要try和catch块,否则会给你错误。此外,在上面的代码中你必须把宣言中明确定义构造函数

TextReader() 
{ 
//----------- Your Code here. 
} 
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是一个单独的字符。