2011-09-05 49 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

是的,这是一个很好的做法,但请看看其他地方的答案。 –