为什么我会得到java.lang.NullPointerException?

为什么我会得到java.lang.NullPointerException?,java,nullpointerexception,Java,Nullpointerexception,我想输入一个名字并打印第一个字符 public class Test { public static void main(String[] args) { Console console = System.console(); System.out.println("Type your name : "); String inputChar = console.readLine(); char firstChar =

我想输入一个名字并打印第一个字符

public class Test {

    public static void main(String[] args) {

        Console console = System.console();
        System.out.println("Type your name : ");
        String inputChar = console.readLine();

        char firstChar = inputChar.charAt(0);

        System.out.println(firstChar);



    }
}

一些IDE将为控制台类返回NPE。您可以使用Scanner类并轻松地执行此操作:

试试这个:

      Scanner scan = new Scanner(System.in);
      System.out.println("Enter a Name:");
      String s = scan.next();
      System.out.println(s.charAt(0));

这将打印输入字符串的第一个字母。

一些IDE将为Console类返回NPE。您可以使用Scanner类并轻松地执行此操作:

试试这个:

      Scanner scan = new Scanner(System.in);
      System.out.println("Enter a Name:");
      String s = scan.next();
      System.out.println(s.charAt(0));

这将打印输入字符串的第一个字母。

一些IDE将为Console类返回NPE。您可以使用Scanner类并轻松地执行此操作:

试试这个:

      Scanner scan = new Scanner(System.in);
      System.out.println("Enter a Name:");
      String s = scan.next();
      System.out.println(s.charAt(0));

这将打印输入字符串的第一个字母。

一些IDE将为Console类返回NPE。您可以使用Scanner类并轻松地执行此操作:

试试这个:

      Scanner scan = new Scanner(System.in);
      System.out.println("Enter a Name:");
      String s = scan.next();
      System.out.println(s.charAt(0));

这将打印输入字符串的第一个字母。

使用Console类有时可能有点不可靠

对于读取控制台输入,最好使用Scanner类或BufferedReader。 您可以使用如下扫描仪:

Scanner scanner = new Scanner(System.in); // System.in is the console's inputstream
System.out.print("Enter text : ");
String input = scanner.nextLine();
// ^^ This reads the entire line. Use this if you expect spaces in your input
// Otherwise, you can use scanner.next() if you only want to read the next token
System.out.println(input);
您还可以使用BufferedReader,如:

Java 7之前的语法

try {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);
        br.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);

    } catch (Exception e) {
        e.printStackTrace();
    }
Java7语法

try {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);
        br.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);

    } catch (Exception e) {
        e.printStackTrace();
    }
注意:调用br.readLine()时需要使用try-catch语句,因为它会引发IOException


如果要读取标记(由空格分隔的文本块),可以使用Scanner。如果只想从InputStream中读取,请使用BufferedReader。

使用Console类有时可能有点不可靠

对于读取控制台输入,最好使用Scanner类或BufferedReader。 您可以使用如下扫描仪:

Scanner scanner = new Scanner(System.in); // System.in is the console's inputstream
System.out.print("Enter text : ");
String input = scanner.nextLine();
// ^^ This reads the entire line. Use this if you expect spaces in your input
// Otherwise, you can use scanner.next() if you only want to read the next token
System.out.println(input);
您还可以使用BufferedReader,如:

Java 7之前的语法

try {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);
        br.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);

    } catch (Exception e) {
        e.printStackTrace();
    }
Java7语法

try {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);
        br.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);

    } catch (Exception e) {
        e.printStackTrace();
    }
注意:调用br.readLine()时需要使用try-catch语句,因为它会引发IOException


如果要读取标记(由空格分隔的文本块),可以使用Scanner。如果只想从InputStream中读取,请使用BufferedReader。

使用Console类有时可能有点不可靠

对于读取控制台输入,最好使用Scanner类或BufferedReader。 您可以使用如下扫描仪:

Scanner scanner = new Scanner(System.in); // System.in is the console's inputstream
System.out.print("Enter text : ");
String input = scanner.nextLine();
// ^^ This reads the entire line. Use this if you expect spaces in your input
// Otherwise, you can use scanner.next() if you only want to read the next token
System.out.println(input);
您还可以使用BufferedReader,如:

Java 7之前的语法

try {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);
        br.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);

    } catch (Exception e) {
        e.printStackTrace();
    }
Java7语法

try {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);
        br.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);

    } catch (Exception e) {
        e.printStackTrace();
    }
注意:调用br.readLine()时需要使用try-catch语句,因为它会引发IOException


如果要读取标记(由空格分隔的文本块),可以使用Scanner。如果只想从InputStream中读取,请使用BufferedReader。

使用Console类有时可能有点不可靠

对于读取控制台输入,最好使用Scanner类或BufferedReader。 您可以使用如下扫描仪:

Scanner scanner = new Scanner(System.in); // System.in is the console's inputstream
System.out.print("Enter text : ");
String input = scanner.nextLine();
// ^^ This reads the entire line. Use this if you expect spaces in your input
// Otherwise, you can use scanner.next() if you only want to read the next token
System.out.println(input);
您还可以使用BufferedReader,如:

Java 7之前的语法

try {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);
        br.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);

    } catch (Exception e) {
        e.printStackTrace();
    }
Java7语法

try {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);
        br.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {

        System.out.print("Enter text : ");
        String input = br.readLine();
        System.out.println(input);

    } catch (Exception e) {
        e.printStackTrace();
    }
注意:调用br.readLine()时需要使用try-catch语句,因为它会引发IOException


如果要读取标记(由空格分隔的文本块),可以使用Scanner。如果您只想从InputStream中读取数据,请使用BufferedReader。

提供从何处获取NPE的堆栈跟踪。您是否在代码上安装了调试器?[有时,当人们在IDE中运行代码时,
Console
class会给他们带来惊喜。][1][1]:提供堆栈跟踪,您从哪里获得NPE。您是否在代码上安装了调试器?[有时,当人们在IDE中运行代码时,
Console
class会给他们带来惊喜。][1][1]:提供堆栈跟踪,您从哪里获得NPE。您是否在代码上安装了调试器?[有时,当人们在IDE中运行代码时,
Console
class会给他们带来惊喜。][1][1]:提供堆栈跟踪,您从哪里获得NPE。你在代码上放了调试器吗?[有时
控制台
类在IDE中运行代码时会让人感到意外。][1][1]:+1作为替代。Scanner类有许多有用的函数,t处理可能发生的异常。Scanner类有许多有用的函数,t处理可能发生的异常。Scanner类有许多有用的函数,t处理可能发生的异常。Scanner类有许多有用的函数,t处理可能发生的异常。