Java 为什么运行此代码时会出现NullPointerException?

Java 为什么运行此代码时会出现NullPointerException?,java,input,nullpointerexception,char,Java,Input,Nullpointerexception,Char,为什么我在运行这段代码时会遇到NullPointerException,我已经查找了它是什么,但仍然不知道如何修复它;请帮忙 import java.util.Scanner; public class Test{ public static void main(String [] args){ Scanner sc = new Scanner(System.in); System.out.println(); String User = sc.n

为什么我在运行这段代码时会遇到NullPointerException,我已经查找了它是什么,但仍然不知道如何修复它;请帮忙

import java.util.Scanner;
public class Test{
public static void main(String [] args){
        Scanner sc = new Scanner(System.in);
        System.out.println();
        String User = sc.nextLine();
        char [] pass = System.console().readPassword();
        System.out.println(pass);
        char c = sc.next().charAt(0);
        System.out.println(c);
        char d = sc.findInLine("a").charAt(0);
        System.out.println(d);
        char b = sc.next().charAt(0);
        System.out.println(b);
        System.out.println(User);
} 
}
运行代码时,所有操作都正常运行,直到最后两行使用变量
char b
时,输出的错误如下:

Exception in thread "main" java.lang.NullPointerException
    at Test.main(Test.java:11)

它看起来像
sc.findInLine(“.”)
在这里返回null。根据,


另外,当您将字符串模式传递给findInLine时,它最终的行为类似于
findInLine(pattern.compile(pattern))

虽然整个类没有包含在您的代码段中,但我觉得下面可能是问题所在

  • 您可能忘记在System.out.println(x)中设置x
  • sc对象中可能没有任何“.”,因此
    sc.next(“.”)返回
    null
  • 当您尝试使用null对象时,
    NullPointerException
    会在Java应用程序中抛出。尝试调用空对象的实例方法时发生错误。例如,您有一个对象
    sc.next(“.”
    返回一个空对象,并且您正试图使用此对象访问
    charAt(0)
    方法

    如果您仍然有些困惑,请发布您的整个课程

    尝试以下方法:

    import java.util.Scanner;
    public class Test{
    public static void main(String [] args){
            Scanner sc = new Scanner(System.in);
            System.out.println();
            String User = sc.nextLine();
            char [] pass = System.console().readPassword();
            System.out.println(pass);
            char c = sc.next().charAt(0);
            System.out.println(c);
            String d = sc.next();
            boolean Contained;
            if(d.contains("a")){
               Contained = true;
            }
            else{ Contained = false; }
            System.out.println(d);
            System.out.println("Contains a ? " + Contained); 
            char b = sc.next().charAt(0);
            System.out.println(b);
            System.out.println(User);
    } 
    }
    

    这仍然会检查字符
    a
    是否在字符串中,尽管它将返回
    true
    false

    什么是“sc”以及如何确保它有两个“.”?因为
    sc.next(“.”
    返回
    null
    。第33行是
    char d=sc.findInLine(.”)。charAt(0)
    看起来像
    sc.findInLine(“.”
    返回
    null
    @Andy我可以使用哪些参数从扫描仪中查找特定字符?我试着用一个存在的字母替换
    ,但它仍然会给出
    NullPointerException
    import java.util.Scanner;
    public class Test{
    public static void main(String [] args){
            Scanner sc = new Scanner(System.in);
            System.out.println();
            String User = sc.nextLine();
            char [] pass = System.console().readPassword();
            System.out.println(pass);
            char c = sc.next().charAt(0);
            System.out.println(c);
            String d = sc.next();
            boolean Contained;
            if(d.contains("a")){
               Contained = true;
            }
            else{ Contained = false; }
            System.out.println(d);
            System.out.println("Contains a ? " + Contained); 
            char b = sc.next().charAt(0);
            System.out.println(b);
            System.out.println(User);
    } 
    }