2015-02-08 60 views
0

我是Java新手,因爲遇到了錯誤,所以我覺得它非常複雜。所以,我有這段代碼的問題:While循環中的掃描變量的錯誤

主類:

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」,程序仍然在繼續,讓我寫點別的東西。代碼有什麼問題?

回答

2

使用!=運算符無法正確比較字符串。相反,你應該使用while(!ans.equals("A"))。其次,儘量不要在create方法中重新創建Scanner對象。這是一種資源浪費。

+0

異常線程 「main」 顯示java.lang.NullPointerException \t在Main.main(Main.java:14) (在第14行我有一段時間(!ans.equals( 「A」))) – Arnau 2015-02-08 12:17:13

+0

這是因爲ans的​​初始值爲空。你應該把它設置爲不是「A」 – 2015-02-08 12:20:31

+0

好吧。有用!雖然我不明白爲什麼如果我設置ans = null – Arnau 2015-02-08 12:28:54