Java 未读入变量的文本
这是我的代码,我应该读入数据,如Java 未读入变量的文本,java,compiler-errors,Java,Compiler Errors,这是我的代码,我应该读入数据,如aaabbbccddd和输出a3b3c3d3 我已经更新了代码,现在代码已经编译并运行了,但是没有输出任何内容。我不知道这是我读取数据的方式,还是代码不正确 String text; FileReader data = new FileReader("input.txt"); BufferedReader in = new BufferedReader(data); text=in.readLine();
aaabbbccddd
和输出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;
}
字符串文本;
FileReader数据=新的FileReader(“input.txt”);
BufferedReader in=新的BufferedReader(数据);
text=in.readLine();
in.close();
//计数器查看数据的长度
int计数器=0;
//计数器2查看当前字母或数字,确定其是否相同,然后对其进行迭代
int计数器2=0;
while(text.charAt(counter)编译器抱怨的原因是因为在这个循环中:
while (in.readLine()!=null)
{
text = in.readLine();
}
循环体可能永远不会被执行,这意味着text
可能永远不会被设置为任何值。而且Java编译器不喜欢使用未设置为任何值的变量
但无论如何,整个循环都是错误的。您只使用了一个输入字符串,那么为什么这是一个循环?在我们帮助解决此问题之前,我们需要知道您正试图完成什么。如果您确实想要一个循环,那么在.readLine()中调用将是错误的
是上面的两倍,因为这意味着它每次在循环中读取两行。假设您正确导入了所有java.io
类,下面是导致编译失败的两个问题:
String text;
必须将其初始化为某些内容,例如
String text = null;
可能在while循环中设置它还不够好
另一个问题是这个变量,output
在任何地方都不存在,这就是此行无法编译的原因:
System.out.println(output);
我想你的意思是它是text
是的,我注意到了这一点并把它拿了出来。我也尝试了null的方法,但它只是因为编译器中出现了null点异常而发疯。我提到的这两个问题只会让你编译得足够远。@ajb讨论了你可能遇到的其他问题,一旦你编译了它。null点异常代码>s是在运行时抛出的。编译器与异常无关。如果它导致NPX,则意味着您从未将其设置为任何适当的值。是的,我修复了该问题,并根据ajbs coments进行了更新。但现在它仍然没有输出任何内容。事实证明,它只是一个需要压缩的长字符串。是的,输入文本可能会有几个字符串是AABCD AAABB CBBFE的形式,所以我想读入所有的数据。我需要这样做,它是一个数组,并从那里开始工作吗?你想用你的几个字符串做什么?你想对每个字符串进行计算,还是想把它们连接在一起,然后进行计算?如果是首先,你可能只需要将计算移动到第一个循环中,而循环。读取一行,进行计算,打印输出,然后循环并读取下一行。这……实际上是有史以来最简单的事情。我会尝试返回给你我在重新读取需求时更新了代码,它是一个连续的字符串,而不是s所以我改变了它。现在它是引人注目的,但没有输出anything@user3339579请参阅上面Radiodef的评论。您没有向我们显示编译错误。请注意,您有两次接近票数,因为您没有显示任何错误消息。我刚刚更新了所有内容,因为其他人的帮助显示了代码中的一个基本缺陷。while(文本字符(计数器)