以下是我的代码,我应该读取AAABBBCCCDDD
和输出a3b3c3d3
等数据。
我已经更新了代码,现在代码编译并运行,但是没有输出。我不知道它是否正在读取数据或代码是否错误。
String text;
FileReader data = new FileReader("input.txt");
BufferedReader in = new BufferedReader(data);
text=in.readLine();
in.close();
//Counter looks at length of data
int counter=0;
//Counter2 looks at current letter or number to make see if its the same then iterates it
int counter2=0;
while (text.charAt(counter)<=text.length())
{
while (text.charAt(counter)==text.charAt(counter2+1))
{
counter2++;
}
System.out.println(text.charAt(counter) + counter2);
counter=counter2;
}
答案 0 :(得分:1)
编译器抱怨的原因是因为在这个循环中:
while (in.readLine()!=null)
{
text = in.readLine();
}
循环体可能永远不会被执行,这意味着text
永远不会被设置为任何东西。当您使用可能未设置为任何内容的变量时,Java编译器不喜欢它。
但无论如何整个循环都是错误的。你只使用一个输入字符串,为什么这是一个循环?在我们帮助解决这个问题之前,我们需要知道您要完成的任务。如果你确实想要一个循环,那么按上面的方式调用in.readLine()
两次是错误的,因为这意味着每次循环都会读取两个行。
答案 1 :(得分:0)
假设您已正确导入所有java.io
类,以下是导致编译失败的两个问题:
String text;
这必须初始化为某种东西。如
String text = null;
可能在while循环中设置它是不够的。
另一个问题是这个变量,output
在任何地方都不存在,这就是为什么这行不能编译的原因:
System.out.println(output);
我认为你的意思是text