Eclipse console返回null
2016-05-14 21:58
471 查看
一、代码测试
import java.io.Console; import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { Console console = System.console(); if(console != null){ System.out.println("console method to read input!"); readFromConsole(console); }else{ System.out.println("scanner method to read input!"); readFromScanner(); } } public static void readFromConsole(Console console){ System.out.print("please input something:"); String str = console.readLine(); System.out.println("your input are: " + str); } public static void readFromScanner(){ Scanner sca = new Scanner(System.in); System.out.print("please input something:"); System.out.println("your input are: " + sca.nextLine()); sca.close(); } }
二、测试结果
通过Unix/Linux Terminal或者windows cmd方式运行时,readFromConsole被执行。
通过在eclipse中运行时,
readFromScanner被执行。
三、原因
在jdk说明文档中,对console类的描述为:访问与当前 Java 虚拟机关联的基于字符的控制台设备(如果有)。
虚拟机是否具有控制台取决于底层平台,还取决于调用虚拟机的方式。如果虚拟机从一个交互式命令行开始启动,且没有重定向标准输入和输出流,那么其控制台将存在,并且通常连接到键盘并从虚拟机启动的地方显示。如果虚拟机是自动启动的(例如,由后台作业调度程序启动),那么它通常没有控制台。
如果此虚拟机具有控制台,那么它将由此类唯一的实例(可通过调用 System.console() 方法获得)表示。如果没有可用的控制台设备,那么对该方法的调用将返回 null。
相关文章推荐
- 十本最经典的java书籍
- 文章标题
- java hdu2014青年歌手大奖赛_评委会打分
- java多线程总结
- Java Servlet(十):JSTL核心标签库
- java多线程系列7-停止线程
- JavaSE_String 截取字符串 String.substring
- JAVA多线程之wait/notify
- 第二道题:括号配对问题
- java中的==、equals和hashCode以及hashCode生成
- HBase新版本Java API编程实战及基本操作方法封装
- 69道Spring面试题和答案
- java多线程系列6-阻塞队列
- 【JavaEE】JDBC
- Spring Mvc那点事---(5)Spring Mvc请求参数传递
- 百度之星2016 资格赛 java 代码实现
- 学习SpringMVC(四)之使用pojo作为参数
- 深入理解java内存模型(七)——总结
- 合并排序-java
- 深入理解java内存模型(六)——final