黑马程序员技术交流社区

标题: why console.readLine();has a NullPointerException [打印本页]

作者: 寇龙飞    时间: 2012-9-13 12:01
标题: why console.readLine();has a NullPointerException
  1. package com.itheima.test;

  2. import java.io.Console;

  3. public class ConsoleTest {
  4.         public static void main(String[] args) {
  5.                 Console console = null;
  6.                 System.out.println("请任意输入一个字符串,敲回车结束:");
  7.                 String str = console.readLine();
  8.                 System.out.println(str);
  9.         }

  10. }
复制代码
奇了怪了。运行报错:
  1. Exception in thread "main" java.lang.NullPointerException
  2.         at com.itheima.test.ConsoleTest.main(ConsoleTest.java:9)
  3. 请任意输入一个字符串,敲回车结束:
复制代码
API中是这么说的,我的用法怎么不对啊。
  1. readLine
  2. public String readLine()从控制台读取单行文本。

  3. 返回:
  4. 包含从控制台读取的行的字符串,该字符串不包含任何行终止符;如果已到达流的末尾,则返回 null。
  5. 抛出:
  6. IOError - 如果发生 I/O 错误。
复制代码

作者: 舒远    时间: 2012-9-13 12:20
本帖最后由 舒远 于 2012-9-13 12:30 编辑

console 对象未初始化呢,是一个空引用,直接调用readLine方法肯定会报NullPointerException了,
获取console对象的方式:System.console();
但是如果你是在eclipse中执行的代码,是无法获取到console对象的,返回的就是null。
必须在控制台上才能获取到。
作者: 尤圣回    时间: 2012-9-13 15:02
空指针异常 这类异常一般会出现在对象为初始化 就调用 也技术说 引用指针指向的对象还不存在
作者: 寇龙飞    时间: 2012-9-13 20:41
SOS !!who can help me?
作者: 尤圣回    时间: 2012-9-13 20:43
尤圣回 发表于 2012-9-13 15:02
空指针异常 这类异常一般会出现在对象为初始化 就调用 也技术说 引用指针指向的对象还不存在 ...

public class ConsoleTest {
        public static void main(String[] args) {
                Console console = null;
                System.out.println("请任意输入一个字符串,敲回车结束:");

                String str = console.readLine();
                System.out.println(str);
        }

}

作者: 尤圣回    时间: 2012-9-13 20:45
尤圣回 发表于 2012-9-13 20:43
public class ConsoleTest {
        public static void main(String[] args) {
                Consol ...

public class ConsoleTest {
        public static void main(String[] args) {
                Console console = null;
                System.out.println("请任意输入一个字符串,敲回车结束:");      
                  //这边要加上键盘输入流啊 没有你这么去读
                  
                String str = console.readLine();
                System.out.println(str);
        }

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2