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(文本字符(计数器)