2014-10-01 3 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 - в то время -> проверить, если вход через общий атрибут Bool -> продолжить/LOOP нарушится

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; 
    } 
} 

на том же ключе можно возобновить, если пе код EDED.

0

Попробуйте создать фоновый поток, который ждет 1 секунду, чтобы пользователь мог выбрать паузу. Если он не выбран в течение 1 секунды, перейдите вперед.

Как это записано, ваш Thread.sleep() заблокирует пользовательский интерфейс в течение 1 секунды, и независимо от того, что пользователь делает, это не повлияет на вашу программу.

Смежные вопросы