今天有人问了我这个问题,但我不太懂解释,麻烦各位看看 public static void main(String[] args){ System.out.println(" //字符串从这一行直到下一行 ");}都知道是编译错误,但有谁可以解释一下? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String literal is not properly closed by a double-quote 是的,我同意你的观点。但既然有人问到,我觉得还是向大家请教一下嘛。其实我想的问是:System.out.println(""); 这写法是正常的System.out.println(" ");把字符串从一行变成两行,就编译不过。我知道正确的写法,只是想问问这个是错在哪里的。 呵呵,这个就是编译器的事咯,它认为这种是非法的,就像你定义的变量为关键字,编译也通不过,不一样到底?另外,换行一般都这样吧 System.out.println("" + "" + "" + ""); 可以从编译原理的角度理解。Java继承了C/C++松散的编程风格(PS:虽然几乎所有的Java教材上都不建议这种风格),可以将一个具有语义的语句分成多行书写(同样的,也允许将多个语句写在一行)。在C/C++编译体系里,换行符是作为编译元素的分隔符,它与允许写在变量与运算符之间的空格是一样的。int a=1+2;和inta=1+2;是一样的。LZ的例子中,编译器会将换行符两边的双引号都分析为编译元素(注释会在预编译时过滤掉),而这两个元素写法都是错误的,因此编译错误。LZ这题确实有点钻牛角尖,但在下不太赞成3L的意见。这种题目看似没什么用,但多了解些编程时容易出错的地方可以防止自己出同样的错误,也可以提高维护自己代码和修改同事代码的能力。(只是有些地方了解下就好,不用太过深究) Java 不像 JavaScript, Shell 脚本可以在双引号当中断开的。 我想应该是“”中的就是一个字符串,但是你把字符串写到了两行,JVM不能编译,所以编译错误,因为用回车产生的换行,编译器无法将它作为字符串解析 字符串换行要加+,如下还有错吗? System.out.println(" //字符串从这一行直到下一行"+ ""); 看来是我问的不好,应该是这样子的:System.out.println(" ");注释那个只是我自己加上去而已。问题就是把字符串分割成2行表示。 越问越没意思了. 但是初学者都是这样.不要问为什么有问题. 更要把精力放到怎么写好的代码上来.这个问题是给编译器出的, 写程序真不需要care about it. 应该是java编译规则规定引号包起来的内容只能在同意行里吧,要是你需要写成两行的话就要这样:"第一行"+"第二行" java虚拟机将换行的"当成了另外一个开始了,将"后面的当成了一个字符串,而且是没有结束的字符串。。 虽然java是一种形式自由的语言,额外的空格,跳格,回车都不会对程序结构造成任何影响,但是在同一行有了开始的 ‘“ ’ 却没有结束的 ‘ ”’。这不就相当于你一句话说了开头,在中间又说了一大推与开头那句无关的废话,虽然你最后有了结尾。但你让别人怎么能明白你的意思? java语法规定对于同一字符串不能存在于多行 你要问java虚拟机是怎样的处理机制。System.out.println(""+"");这样也是可以的。就好比1+1为什么=2,这个是数学天才干的事。你要是在理解不了,就是程序不像你的大脑,程序不是万能的,要完成你那一种解析,估计要多费很多行代码,甚至可能会影响其他的实现。个人也觉得没啥必要,这就是规范,1+1在理论上就等于2. 关于鼠标移动的侦听 关于java 缓冲流输入输出的疑惑 关于Jakarta POI读取Excel的问题 求JAVA教程 各位大哥救命呀!关于thinlet 对两个XML文件内容进行比较,如何得到不同的地方?或者给点思路! 关于通讯编程如何建模? 怎样把从一个目录下的文件目录和名称写入一个文本文件? 我想做一个输入法 求教:类的调用问题 ……??????? java播放音乐代码,求教高手啊,这个什么问题呢 关于java的正则表达式问题
这写法是正常的
System.out.println("
");
把字符串从一行变成两行,就编译不过。我知道正确的写法,只是想问问这个是错在哪里的。
呵呵,这个就是编译器的事咯,它认为这种是非法的,就像你定义的变量为关键字,编译也通不过,不一样到底?另外,换行一般都这样吧
System.out.println("" +
"" +
"" +
"");
Java继承了C/C++松散的编程风格(PS:虽然几乎所有的Java教材上都不建议这种风格),可以将一个具有语义的语句分成多行书写(同样的,也允许将多个语句写在一行)。
在C/C++编译体系里,换行符是作为编译元素的分隔符,它与允许写在变量与运算符之间的空格是一样的。
int a=1+2;
和
int
a
=
1
+
2
;
是一样的。
LZ的例子中,编译器会将换行符两边的双引号都分析为编译元素(注释会在预编译时过滤掉),而这两个元素写法都是错误的,因此编译错误。LZ这题确实有点钻牛角尖,但在下不太赞成3L的意见。这种题目看似没什么用,但多了解些编程时容易出错的地方可以防止自己出同样的错误,也可以提高维护自己代码和修改同事代码的能力。(只是有些地方了解下就好,不用太过深究)
System.out.println(" //字符串从这一行直到下一行"+
"");
");注释那个只是我自己加上去而已。
问题就是把字符串分割成2行表示。
不要问为什么有问题. 更要把精力放到怎么写好的代码上来.
这个问题是给编译器出的, 写程序真不需要care about it.
应该是java编译规则规定引号包起来的内容只能在同意行里吧,
要是你需要写成两行的话就要这样:
"第一行"
+"第二行"
System.out.println(""
+"");这样也是可以的。就好比1+1为什么=2,这个是数学天才干的事。你要是在理解不了,就是程序不像你的大脑,程序不是万能的,要完成你那一种解析,估计要多费很多行代码,甚至可能会影响其他的实现。个人也觉得没啥必要,这就是规范,1+1在理论上就等于2.