2013-02-07 55 views
1

我的程序在readLine調用後卡住了,if語句不起作用。我究竟做錯了什麼? #java的第一定時器BufferedReader.readLine不起作用

import java.io.InputStreamReader; 
import java.io.BufferedReader; 
import java.io.IOException; 


public class nums { 
    public static void main(String[] args) throws IOException { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));    
     System.out.println("Number Mania!!!"); 
     System.out.println("Pick your favourite number from 1 to 5"); 
     String favNum = br.readLine(); 
     if (favNum=="3"){ 
      System.out.println("Your favourite number is three!"); 
     } 
     else{ 
      System.out.println("hi!"); 
     } 
    } 
} 
+3

另一天,另一個'=='字符串比較...這個問題可能會讓你感興趣:[如何比較Java中的字符串](http://stackoverflow.com/questions/513832/how-doi-i-比較串式的Java)。那麼這也將是有趣的:http://stackoverflow.com/questions/9698260/what-makes-reference-comparison-work-for-some-strings-in-java – Pshemo

回答

8

使用favNum.equals("3")代替favNum == "3"。您幾乎不應該使用==來比較對象;改爲使用.equals。 (有一些罕見的例外,但你不需要擔心它們,直到你學到更多的Java。)

+0

非常感謝!你知道當使用「==」時它是什麼讓它掛起?我寧願如果它崩潰,所以至少我知道一些錯誤。 – JoseSwagKid

+1

它不應該直接掛起;它應該剛印上「嗨!」並退出。 –

2

使用favNum.equals("3")來比較字符串......實際上,你應該很少有這種情況使用==比較器進行字符串比較。

作爲第二個建議,你應該考慮開始使用java.util.Scanner類。你的代碼可能是這樣的:

import java.util.Scanner; 

public class nums { 
    public static void main(String[] args) { 
     Scanner scann = new Scanner(System.in);    
     System.out.println("Number Mania!!!"); 
     System.out.println("Pick your favourite number from 1 to 5"); 
     int favNum = scann.nextInt(); 
     if (favNum == 3){ 
      System.out.println("Your favourite number is three!"); 
     } 
     else{ 
      System.out.println("hi!"); 
     } 
    } 
} 

希望我能幫忙。

+0

你知道是什麼讓它在使用「==」時掛起?我寧願它是否會崩潰,所以至少我知道一些錯誤 – JoseSwagKid

+1

@JoseSwagKid'=='測試引用相等,而'.equals()'測試值相等。你應該看看Pshemo給出的鏈接 – Smit

相關問題