2013-11-14 34 views
1

虽然用Java编写一个奎因(即自我复制程序),我试图缩进使用制表符输出线:Plus运算符 - 如何实施字符串连接?

... 
char tab = '\t'; 
char qm = 34; 
char comma = ','; 
... 
System.out.println(tab + tab + tab + qm + listing[i] + qm + comma); 
... 

这不起作用,因为“标签+标签+加号运算符。 ..”,增加了的标签的字符值,而不是生成的字符串(61 = 9 + 9 + 9 + 34):

... 
61 public static void main(String[] args) {", 
... 

在开头放置一个空字符串做这项工作:

... 
System.out.println("" + tab + tab + tab + qm + listing[i] + qm + comma); 
... 

但是,我不能在Quine设置中使用简单的引号,因为我需要将它们转义以输出程序文本本身。

我想知道是否有可能强制执行加运算符的解释为字符串连接而不明确使用引号或其他Java类?

回答

3

你绝对需要使用+ -signs?这会做的伎俩,并且在性能方面为它设计的:

String outputString = new StringBuilder() 
    .append(tab).append(tab).append(tab).append(qm) 
    .append(listing[i]).append(qm).append(comma) 
    .toString(); 
System.out.println(outputString); 
1

使用System.out.printf代替System.out.println

char tab = '\t'; 
char qm = 34; 
char comma = ','; 
System.out.printf("%c%c%c", tab, tab,comma); 
0

您可以用简单的字符串替换构造空引号:

... 
System.out.println(new String() + tab + tab + tab + qm + listing[i] + qm + comma); 
...