2012-06-11 5 views
1
import java.io.*; 

public class ConsoleDemo { 

public static void main(String[] args) { 
    String str; 
    Console con; 

    con = System.console(); 

    if (con == null) 
     return; 

    str = con.readLine("Enter a string : "); 
    con.printf("Here is your string %s", str); 
    } 
} 

Я скопировал этот код из книги, в котором говорится, что я бы получил приглашение на экран для ввода строки, но моя IDE просто дает сообщение о завершении выполнения, не давая мне подсказки.Почему консоль не запрашивает ввод?

+0

Вам нужно будет что-то сделать с помощью 'System.in', так как это входной канал консоли (обратный' System.out', который вы можете использовать для печати текста на консоли) – Joost

+2

if (con == null) возвращение; Это единственный выход, не видя выход ... Поэтому проверьте для null и распечатайте, что это значение равно null, тогда вы можете задать следующий вопрос: Почему System.console() возвращает null при запуске в ? –

+0

@SteveH. Любой способ присвоить консоли значение, отличное от нуля? – rIshab1988

ответ

2

Eclipse, ни Netbeans поддерживает использование консоли. Метод Console.istty() вернет false, и вы не будете использовать консоль.

Вы можете изменить свой код на следующий и добиться того же результата и иметь возможность запускать его из среды IDE.

import java.io.*; 

public class ConsoleDemo { 

    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter a String and press enter"); 
     System.out.println("You entered the String: " + scan.nextLine() 
    } 
} 
0

Какие IDE вы используете? Этот код отлично работает, когда вы запускаете его из командной строки, поэтому проблема явно связана с конфигурацией вашей среды IDE.

Используйте следующие команды для компиляции и запуска кода из командной строки:

javac ConsoleDemo.java 
java ConsoleDemo 

Edit: в this link предлагает, используя System.Console не всегда работает в Иде. В качестве альтернативы вы можете просто использовать System.in.

+0

Я использую Eclipse IDE для кодирования и компиляции. – rIshab1988

+0

В этом случае ваш вопрос очень похож на [этот вопрос] (http://stackoverflow.com/questions/104254/java-io-console-support-in-eclipse-ide). Посмотрите там. – mpillar

0

Это потому, что ваш IDE запускает этот код javaw.exe (без окон -> без консоли), а не java.exe (с консольным окном), поэтому System.console() возвращает null.

Стандартное решение для чтения данных из входного потока, который представлен System.in, так что вы можете использовать для сканера например, как

Scanner keybord = new Scanner(System.in); 
String line = keybord.readLine(); 
+0

Я использую Eclipse IDE. Любой выход из этого? – rIshab1988

+0

У меня никогда не было Eclipse для правильной обработки System.console - не уверен, что это связано с javaw или java, но это никогда не работало для меня внутри самого Eclipse. – Liv

1

Ваш код работает как от Eclipse, и командной строки.

Попробуйте так же хорошо, если вы используете Java 5 или +

Scanner in = new Scanner(System.in); 
System.out.print("Enter a String : "); 
String string = in.nextLine(); 
System.out.println("Here is your String : " + string); 
0

По умолчанию eclipse не связывает консоль с JVM. Возможно, вам придется его настроить. Но если вы запустите его в командной строке, у него будет определенная консоль, и, следовательно, она будет работать без каких-либо проблем.

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