Java while循环中的Scanner变量出错
我是Java新手,我发现它非常复杂,因为我遇到了很多错误。所以我对这段代码有一个问题: 主要类别: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
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。