public static void main(String[] args){   System.out.println("         //字符串从这一行直到下一行
          ");
}
都知道是编译错误,但有谁可以解释一下?

解决方案 »

  1.   

    String literal is not properly closed by a double-quote
      

  2.   

    是的,我同意你的观点。但既然有人问到,我觉得还是向大家请教一下嘛。其实我想的问是:System.out.println(""); 
    这写法是正常的
    System.out.println("
         ");
    把字符串从一行变成两行,就编译不过。我知道正确的写法,只是想问问这个是错在哪里的。
      

  3.   


    呵呵,这个就是编译器的事咯,它认为这种是非法的,就像你定义的变量为关键字,编译也通不过,不一样到底?另外,换行一般都这样吧
    System.out.println("" +
    "" +
    "" +
    "");
      

  4.   

    可以从编译原理的角度理解。
    Java继承了C/C++松散的编程风格(PS:虽然几乎所有的Java教材上都不建议这种风格),可以将一个具有语义的语句分成多行书写(同样的,也允许将多个语句写在一行)。
    在C/C++编译体系里,换行符是作为编译元素的分隔符,它与允许写在变量与运算符之间的空格是一样的。
    int a=1+2;

    int
    a
    =
    1
    +
    2
    ;

    是一样的。
    LZ的例子中,编译器会将换行符两边的双引号都分析为编译元素(注释会在预编译时过滤掉),而这两个元素写法都是错误的,因此编译错误。LZ这题确实有点钻牛角尖,但在下不太赞成3L的意见。这种题目看似没什么用,但多了解些编程时容易出错的地方可以防止自己出同样的错误,也可以提高维护自己代码和修改同事代码的能力。(只是有些地方了解下就好,不用太过深究)
      

  5.   

    Java 不像 JavaScript, Shell 脚本可以在双引号当中断开的。
      

  6.   

    我想应该是“”中的就是一个字符串,但是你把字符串写到了两行,JVM不能编译,所以编译错误,因为用回车产生的换行,编译器无法将它作为字符串解析
      

  7.   

    字符串换行要加+,如下还有错吗?                  
    System.out.println(" //字符串从这一行直到下一行"+
      "");
      

  8.   

    看来是我问的不好,应该是这样子的:System.out.println("
                        ");注释那个只是我自己加上去而已。
    问题就是把字符串分割成2行表示。
      

  9.   

    越问越没意思了. 但是初学者都是这样.
    不要问为什么有问题. 更要把精力放到怎么写好的代码上来.
    这个问题是给编译器出的, 写程序真不需要care about it.
      

  10.   


    应该是java编译规则规定引号包起来的内容只能在同意行里吧,
    要是你需要写成两行的话就要这样:
    "第一行"
    +"第二行"
      

  11.   

    java虚拟机将换行的"当成了另外一个开始了,将"后面的当成了一个字符串,而且是没有结束的字符串。。
      

  12.   

    虽然java是一种形式自由的语言,额外的空格,跳格,回车都不会对程序结构造成任何影响,但是在同一行有了开始的 ‘“ ’ 却没有结束的  ‘ ”’。这不就相当于你一句话说了开头,在中间又说了一大推与开头那句无关的废话,虽然你最后有了结尾。但你让别人怎么能明白你的意思?
      

  13.   

    java语法规定对于同一字符串不能存在于多行 
      

  14.   

    你要问java虚拟机是怎样的处理机制。
    System.out.println(""
    +"");这样也是可以的。就好比1+1为什么=2,这个是数学天才干的事。你要是在理解不了,就是程序不像你的大脑,程序不是万能的,要完成你那一种解析,估计要多费很多行代码,甚至可能会影响其他的实现。个人也觉得没啥必要,这就是规范,1+1在理论上就等于2.