Java while循环中的Scanner变量出错

Java while循环中的Scanner变量出错,java,while-loop,java.util.scanner,Java,While Loop,Java.util.scanner,我是Java新手,我发现它非常复杂,因为我遇到了很多错误。所以我对这段代码有一个问题: 主要类别: public class Main { public static void main(String[] args){ Answer a = new Answer(); String ans = null; while(ans != "A"){ ans = a.create(); System.out.print(ans

我是Java新手,我发现它非常复杂,因为我遇到了很多错误。所以我对这段代码有一个问题:

主要类别:

public class Main {

  public static void main(String[] args){

     Answer a = new Answer();

     String ans = null;

     while(ans != "A"){

        ans = a.create();

        System.out.print(ans + "\n");

     }

  }

}
答案类别:

import java.util.Scanner;

public class Answer {

  public String create(){

    Scanner s = new Scanner(System.in);

    return s.next();

  }

}

我希望程序允许我写一些东西。然后,如果我写的不是字母A,程序必须允许我写其他东西,否则必须停止。但是,即使我写了“A”,程序仍在继续,允许我写其他东西。代码有什么问题?

无法使用!=操作人员相反,您应该使用
而(!ans.equals(“A”)
。其次,尽量不要在create方法中重新创建Scanner对象。这是一种资源浪费。

线程“main”java.lang.NullPointerException在main.main(main.java:14)(在第14行我有while(!ans.equals(“a”))中出现异常,这是因为ans的初始值为null。您应该将其设置为非“A”的值。它起作用了!虽然我不明白为什么我会在设置ans=null时出错,但ans的值不是“null”(这是一个字符串)。它是空的,这意味着它什么都不是。当我们对空对象(如ans was)使用方法时,会给出一个NullPointerException。