2013-02-07 25 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

相关问题