2012-02-22 68 views
0

我的程序必须显示问题“10> 2”的答案是否正确,错误或用户必须输入错误。即使我输入“YES”或“NO”,它仍会显示WRONG INPUT。这是一个非常非常简单的程序。不过,我是一个新手。任何帮助将不胜感激。我的程序已成功编译并运行,但显示错误输出

import java.util.Scanner; 

public class yesorno{ 

public static void main (String args[]){ 

    Scanner answer = new Scanner(System.in); 
    String ans; 

    System.out.println("Answer with a YES or NO"); 
    System.out.println("Is 10>2?"); 
    System.out.print("Answer:"); 
    ans = answer.next(); 

    if(ans == "YES"){ 
     System.out.print("Correct!"); 
    } 

    else if (ans == "NO"){ 
     System.out.println("Wrong!"); 
    } 

    else{ 
     System.out.println("Wrong input!"); 
    } 
} 
} 

回答

7
if(ans == "YES"){ 

您应该使用equals()比较字符串,而不是operator==

注意operator==将产生真正的只有两个对象实际上是同一个对象,它是不是这样的。

你应该把它替换到if(ans.equals("YES")) { [和做同样的在你的程序的所有其他条件]

+0

喜!感谢您的回答,但是语法是什么? – singko 2012-02-22 18:39:02

+0

@ keavy:我添加了条件应该是的,并且还附加了一个指向'equals()'方法java docs的链接,所以你可以阅读更多关于它的信息。 – amit 2012-02-22 18:41:01

+0

好的,好的。还有一件事,只有数字“==”? – singko 2012-02-22 18:43:32

1

您正在使用==,这一般不推荐这样做在Java中的字符串比较,因为==确实对象比较而不是实际的字符串比较。

尝试使用equals()方法。

也就是说,从

if(ans == "YES"){ 
    System.out.print("Correct!"); 
} 

else if (ans == "NO"){ 
    System.out.println("Wrong!"); 
} 

更改您的代码

if(ans. equals("YES")){ 
    System.out.print("Correct!"); 
} 

else if (ans.equals("NO")){ 
    System.out.println("Wrong!"); 
} 
+0

它的工作!非常感谢。有一件事,只有数字“==”? – singko 2012-02-22 18:41:45

相关问题