java中的连续错误

时间:2012-10-04 12:08:02

标签: java user-input

  

可能重复:
  How do I compare strings in Java?

在我的java应用程序中。要接受挑战,请按y,但程序不会继续。任何人都可以帮我这个吗?

这是我的代码:

import java.util.Scanner;


    public class MainApp 
    {


        public static void main(String[] args)
        {
            Scanner scanner = new Scanner(System.in);
            System.out.println("Hello User");
            System.out.println("Please Enter your first name");
            String name;
            name =scanner.next();

        System.out.println("\n" + " Hello " + name + "how are you today?");
        String y="";
        y=scanner.next();


        System.out.println("\n" + " Well " +  name + " I am " + y + " Too." +"\n" + " I have a riddle for you " + name + ", wll you Attempt it?" + "\n" + " Type y for yes , or n for no");
        String v;
        v=scanner.next();


        if(v == "y")
            {
            System.out.println("\n" + "How much wood could a wood chuck chuck if a wood chuck could chuck wood? :) " );
            }

        else if(v == "n")
            {
            System.out.println("Ok then " + name + " suit youself, Goodbye! :) ");
            }
        else 
            { 
            System.out.println("Please pick y, or n , and make sure it is in lower case");
            }

        }

    }

2 个答案:

答案 0 :(得分:6)

if(v == "y")

您应该使用String.equals()来比较字符串。

所以条件的代码应该是:

if ("y".equals(v)) //checking "y".equals() prevents null access if v is null

<强>说明:
operator==正在检查身份 - 如果两个操作数是完全相同的对象。这不是你想要的,因为很少有字符串。

另一方面,equals()方法 - 如果两个对象彼此相等,则检查相等

答案 1 :(得分:2)

使用String.equals而不是==运算符,因为被比较的2个String对象不太可能具有相同的对象引用(是同一个对象)。

if ("y".equals(v)) {
...

或更好

if ("y".equalsIgnoreCase(v)) {
...