在循环中你重复定义了一个字符串!String ss = "fff"应该是:
String ss = new String ();
while ( true ){
     ss = "fff";
}

解决方案 »

  1.   

    while(true)
    {
       String ss="fff"; }
    while的语法是没有错的,只是在while语句块中反复声明String类型的引用ss,多个引用同一个名字,这样就出错了。
    可以这样:
    String ss ;
    while ( true ){
         ss = "fff";
    }
    这样String 类型的引用ss 只有一份,只不过在while语句块中反复引用字符串中的fff;
      

  2.   

    楼上的说法对吗?
    楼主不是说
    while(true)
    {
       String ss="fff"; 编译就能通过,我不明白为什么?
    }
    可以啊....
      

  3.   

    while(true)
    {
      ......
    }
    java语法就是这么规定D~
      

  4.   

    可以不带括号写,试试这个! while(true)
    System.out.println("something...");不能通过的原因是,不能写一个单独的定义语句。编译器界定不了这个变量ss是属于哪一块,加上{}后,则显示的指定了ss是在{}之中的一个变量。故可以,只是会让jvm不断创建一个ss的String实例。
      

  5.   

    treesoft(长沙水) 说得有道理。不过我认为,这可说是 Java 编译的一个 bug:
    while(true)
     String ss="fff";

    while(true)
    {
       String ss="fff";
    }
    能完全等同起来,不存在二意性。——我认为。