2014-04-14 2 views
-2
package interf; 

public class NumberPrinter { 

    public interface Printer { 
    public void print (int idx); 
    } 

    public static void print (Printer p) { 
    for (int i = 0; i < 4; i++) { 
     p.print(i); 
    } 
    } 

    public static void main(String[] args) { 
    while(true){ 
     System.out.println("hi-1"); 

     print(new Printer() { 

     @Override 
     public void print(int idx) { 
      while(true){ 
       System.out.println(idx); 
      } 
     } 
     }); 
    } 
    } 
} 

왜 인쇄 만 0 0 0 왜 인쇄되지 않는가? System.out.println ("hi-1");어떻게이 (true)가 작동하는 동안

+6

먼저 끔찍한 들여 쓰기를 수정합니다. – devnull

+1

도움을 요청할 때는 코드 형식을 정독 해주십시오. 나는 코드로 표시하지 않고 코드 자체의 들여 쓰기를하는 것을 의미하지 않는다. 자신 만의 작업을 할 때 좋아하는 것은 무엇이든 할 수 있지만 도움을 요청할 때는 여러 가지 표준 체계 중 어느 것과도 일관성 있고 읽기 쉽도록 바꿔야합니다. Miky Dinescu는이 기회에 당신을 위해 해냈습니다. –

+0

출력은 무엇입니까? –

답변

2

코드 인쇄 (systemSystem을 고정 할 때) "하이 1"의 다음 많은 공의 (영원히), 내면의 인쇄 방법은에서 while(true) 루프를 가지고 있기 때문이다.

외부 코드 while(true) 코드가이 내부 루프에 "고정"되어 두 번 이상 "hi-1"이 표시되지 않으므로 루프가 두 번 이상 실행되지 않습니다.

0

주석 처리 루프가 system.out.println의 첫 글자를 대문자로하고의 무한 루프를 얻을 수 있습니다 동안 두 번째 :

hi-1 
0 
1 
2 
3 
hi-1 
0 
1 
2 
3 
... 

package interf; 

public class NumberPrinter { 

    public interface Printer { 
    public void print (int idx); 
    } 

    public static void print (Printer p) { 
    for (int i = 0; i < 4; i++) { 
     p.print(i); 
    } 
    } 

    public static void main(String[] args) { 
    while(true){ 
     System.out.println("hi-1"); 

     print(new Printer() { 

     @Override 
     public void print(int idx) { 
      //while(true){ 
       System.out.println(idx); 
      //} 
     } 
     }); 
    } 
    } 
} 
+0

System.out.println ("hi-1"); 내 이클립스 콘솔에서이 줄 인쇄를 볼 수 없으며 단지 0 만 인쇄됩니다. 나는 단지 hi-1이 보이지 않는 이유를 알고 싶다. 나머지 코드는 이해한다. 나는 원래 코드에서 작업하는 동안 (실제로) 2가 보이는 것을 처음으로 보여줍니다. – user3532466

관련 문제