2013-11-14 56 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); 
...