2014-10-01 5 views
-2

나는 경우 같은 루프 : 나는 사용자 입력을 요구하지 않았다 코드를 추가하는 방법에 대한 이동하지만, 얼마나일시 정지 루프

for(int i = 0; i <= 10; i++) { 
    System.out.println("Hello, User " + i; 
    Thread.sleep(1000) 
} 

사용자는에서 일시 정지를 루프를 선택한 경우 주어진 시점에, 그들은 그렇게 할 수 있고, 잠시 후에 재개 할 수 있습니까?

+0

무엇? 사용자 입력을 원하지 않지만 사용자 입력을 설명한다는 것은 사용자가 말하는 것입니다. 너 정확히 뭘 하려구? – tnw

+0

나는 @tnw와 함께있다 - 당신의 의도는 분명하지 않다. 'i = 6' 단계에서 더 긴 휴식 시간을 하드 코딩 하시겠습니까? – chrisb2244

+0

가능한지 여부를 알 수 없기 때문에 아직 코드에 없습니다. 사용자가 무언가를 입력하고 싶다면 모든 반복을 물어보고 싶지 않습니다. 사용자가 각 반복에서 어느 시점 에든 무언가를 입력하여 하드를 일시 중지 할 수 있기를 바랍니다. – brianforan

답변

0

이렇게하려면 멀티 스레딩을 구현해야합니다. 하나의 스레드는 루프 (T1)를 실행하고 다른 스레드는 사용자 입력 (T2)을 기다릴 수 있습니다.

T1 -> 은/브레이크 루프를

T2 계속 - - 입력 기다려 - 일반적인 부울 특성을 통해 입력이 있는지 확인> - 동안> 만약 입력 == "중지"-> 집합 당신은 북동 경우 코드를 다시 시작할 수 있습니다 같은 라인에

class MultiThread implements Runnable { 

    boolean gotInput = false; 
    int i = 0; 
    public void run() { 
     for(;i <= 10 && !gotInput; i++) { 
      System.out.println("Hello, User " + i; 
      Thread.sleep(1000) 
     } 
    } 

    public static void main(String args[]) { 

     MultiThread mt = new MultiThread(); 
     Thread t = new Thread(mt); 
     t.start(); 

     Scanner s = new Scanner(System.in); 
     while (!s.next().equals("pause")); 

     test.gotInput = true; 
    } 
} 

:

뭔가처럼 일시 정지 루프 true로 공통 속성 편집.

0

사용자가 일시 중지를 선택할 때까지 1 초 동안 기다리는 백그라운드 스레드를 만들어보십시오. 1 초 이내에 선택되지 않으면 앞으로 이동하십시오.

이 방법을 쓰면 사용자의 Thread.sleep()은 UI를 1 초 동안 잠그고 사용자의 작업과 상관없이 프로그램에 영향을 미치지 않습니다.