2013-07-31 5 views
2

Как проверить, что-то написано на входе в консоль? если код не будет продолжаться, но если я напишу, чем что-то новое произойдет? Является ли это возможным?Как проверить, что-то написано на консоли?

Scanner k2sk; 
k2sk = new Scanner(System.in); 
k2sk.nextLine(); 

но код ждет, пока я пишу что-то

+0

k2sk = новый сканер (System.in); и k2sk.nextLine(), но код ждет, пока я не напишу что-нибудь – user2610533

+0

@ user2610533 Добавьте это в тело вопроса. – arshajii

+0

Так вы спрашиваете, как получить ввод, не блокируя выполнение вашей программы? @ user2610533 –

ответ

2

Если вы хотите дождаться ввода пользователем, и в то же время вы не хотите ждать его, просто назначьте этот долг другому Thread.

Здесь я сделал короткий пример, надеюсь, что это будет полезно:

import java.util.Scanner; 
public class TestInput { 

    public static void main(String[] aa) 
    { 
     new Thread(new T1()).start(); 
     System.out.println("MOVED FURTHER"); 
    } 

    public static class T1 implements Runnable 
    { 

     public void run() { 

      Scanner k2sk; 
      k2sk = new Scanner(System.in); 
      k2sk.nextLine(); 
      System.out.println("DONE"); 
     } 
    } 
} 
0

Если вы хотите, чтобы ваш поток работает после чтения входа, я бы рекомендовал вам посвящая в отделенную нить читать вход асинхронно: How to asynchronously read stdin?

1

Основываясь на том, что вы предоставили, ваша программа будет блокироваться в k2sk.nextLine();, пока что-то не появится в консоли. Хотя технически это правильно, это означает, что ваша программа, если она не имеет многопоточности, будет вечно вечно или до ее окончания.

Один из способов сделать вашу программу многопоточной, но это может выходить за рамки программы.

Другим решением является попытка использовать фактический класс консоли. This должен дать некоторое представление об этом, но это будет работать, только если ваша программа вращается вокруг взаимодействия с пользователем, например, запрашивая информацию пользователя в последовательности.

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