我正在尝试编写代码以将给定文本文件的所有字符(包括空格)导入单个字符串以进行分析。我正在使用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?
}
}
}
答案 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
是一个字符。