2012-06-11 70 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

如果(CON == NULL) return; 這是退出沒有看到輸出...所以檢查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 

編輯:爲this link表明,使用System.Console並不總是在IDE中工作。或者,您可以使用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關聯。您可能需要配置它。但是如果你在命令行中運行它,它肯定會有控制檯,因此它將毫無問題地運行。

相關問題