2011-09-05 3 views
5

, 나는 새로운 언어를 학습하고이 코드를 복용하고 있습니다 :사상 최초로 자바 프로그램 잘못된 출력

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 = [ 
*/ 

왜 출력을 생성하지 않습니다 "]"문자를? 유니 코드와 관련이 있습니까?

PostEdited : 변수 E.c가 실험 목적으로 초기화되지 않았습니다.

+1

E.c의 가치는 무엇입니까? –

+0

그것은 내 편이 생산됩니다. 이 모든 코드입니까? –

+0

그것은 나에게도 기대되는 결과를 준다. – luketorjussen

답변

4

char c을 초기화 할 필요가 없으므로 Null 문자를 인쇄하려고합니다. 즉 \0 흥미롭게도 대부분의 C 코드는 문자열 마커의 끝으로이 문자를 쉽게 복사하고 붙여 넣을 수 없습니다.

코드를 실행할 때 ]이 표시됩니다.

하는

char c = '?'; 

으로 코드를 변경하려고하는 것은 나에게이 문제를 재현하는

i = 0 
c = [?] 

한 가지 방법의 출력을 제공하는 것은

java Main | more 

유닉스

에서 실행되는 출력

i = 0 
c = [ 
+0

이것은 C 질문이 아닙니다, 이것은 자바 질문이며, 나를 포함한 위의 많은 사용자는 예상대로 출력을 가지고 있다고 말합니다! – 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

당신은 당신의 문자의 C뿐만 아니라 INT 내가를 초기화해야한다. 좋은 코드 연습 : 일단 변수를 선언하면 변수를 초기화하는 것이 중요합니다!

+0

예, 좋은 습관이지만 다른 곳에서 답을 찾아보십시오. –