2011-09-05 25 views
5

對不起,我真的很愚蠢的問題,我正在學習一種新的語言,並採取這樣的代碼:有史以來第一個Java程序錯誤輸出

public class Exercise01 { 
    int i; 
    char c; 

    public static void main(String[] args) { 

     Exercise01 E = new Exercise01(); 
     System.out.println("i = " + E.i); 
     System.out.println("c = [" + E.c + "]"); 
    } 
} 
/* Output: 
i = 0 
c = [ 
*/ 

爲什麼輸出不產生「]」字?它與Unicode有關嗎?

PostEdited:變量E.c未被初始化用於實驗目的。

+1

E.c的價值是什麼? –

+0

它在我身邊生產。這是所有的代碼? –

+0

它也給我預期的輸出。 – luketorjussen

回答

4

您試圖打印空字符,因爲您的char c不需要初始化。即\0有趣的是,你不能簡單地複製和粘貼這個字符,因爲大多數C代碼將其視爲字符串標記的結尾。

我在運行代碼時看到]

嘗試用

char c = '?'; 

改變你的代碼給我的重現此問題

i = 0 
c = [?] 

一種方式的輸出是在UNIX

java Main | more 

運行的輸出

i = 0 
c = [ 
+0

這不是一個C的問題,這是一個Java問題,包括我在內的許多用戶都說他們已經得到了預期的輸出! – Rakesh

+4

問題是'爲什麼輸出不會產生']「字符?」它適用於我「不是答案。與C程序的交互是一個可能的答案。 –

+1

'more'是用C編寫的程序。使用它或類似的東西會導致輸出截斷。 –

6

它可能是你的程序輸出到的地方,控制檯或窗口,被E + C的值U + 0000字符弄糊塗了。

它適用於我。

初始化E.c並重試。

1

可能有與事實E.c未初始化任何東西做

+3

JLS 4.12.5:'創建時,每個類變量,實例變量或數組組件都被初始化爲默認值(§15.9,§15.10):[...]對於char類型,默認值爲null字符,即'\ u0000'.' –

1

我想是因爲c沒有初始化的,因此持有\0,即「行結束」。所以,println打印,直到行結束,不打印]

+0

-1 println打印整個字符串。這可能是UI不能正確顯示它。 – Stefan

0

你應該初始化字符ç還有INT I。良好的代碼實踐:聲明變量後,初始化變量非常重要!

+0

是的,這是一個很好的做法,但請看看其他地方的答案。 –