2014-02-22 23 views
0

这里是我的代码,我应该读取数据,如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; 
      } 
+1

你的天堂”告诉我们编译错误。 –

+0

请注意,您有两个密切的投票,因为您没有显示任何错误消息。 –

+0

我刚刚更新了一切,因为其他人的帮助显示了代码中的一个基本缺陷。 – user3339579

回答

1

编译器是抱怨的原因是因为在这个循环:

while (in.readLine()!=null) 
    { 
    text = in.readLine(); 
    } 

它有可能是循环体将永远不会得到执行,这意味着它可能是text将永远不会被设置为任何东西。当你使用一个可能没有设置的变量时,Java编译器不喜欢它。

但无论如何整个循环都是错误的。你只使用一个输入字符串,那么为什么这是一个循环?在我们可以帮助解决这个问题之前,我们需要知道你想要完成什么。如果你确实需要一个循环,那么按照上面的方法调用in.readLine()两次是错误的,因为这意味着它将每次通过循环读取两行行。

+0

呀输入文本可能是几个字符串 AABCD形式 AAABB CBBFE 所以我想在所有的数据读取。我是否需要这样做,以便从那里开始创建一个数组并在其中工作? – user3339579

+0

你想用你的几个字符串做什么?你想对每个字符串进行计算,还是想将它们连接在一起,然后进行计算?如果它是第一个,你可能只需要将计算移动到第一个“while”循环中。阅读一条线,进行计算,打印输出,然后返回并读取下一行。 – ajb

+0

这....实际上是有史以来最简单的事情。我会尽力回复你 – user3339579

0

假设你已经正确导入所有的java.io类,这里是导致编译两个问题失败:

String text; 

这必须初始化的东西。如

String text = null; 

可能 while循环设置它不够好。

另一个问题是这个变量,output不存在任何地方,这就是为什么这条线不会编译:

System.out.println(output); 

我想你的意思是它是text

+0

是的,我注意到了,并把它拿出来。我也尝试了null的东西,它只是在编译器中出现空点异常而生气。 – user3339579

+0

我提到的这两个问题只会让你足够编译。 @ajb讨论了你可能拥有的其他问题,一旦你完成编译工作。 – aliteralmind

+0

在运行时抛出'NullPointerException'。编译器与异常无关。如果它导致NPX,那么这意味着你永远不会将它设置为任何适当的。 – aliteralmind