如何控制用户输入

时间:2010-12-16 11:28:08

标签: java if-statement user-input java.util.scanner

我的程序首先显示两个选项,并要求用户选择一个选项,问题是我的程序忽略了扫描仪的输入,即使条件为真也不进入块,所以问题是什么!

import java.util.Scanner;

public class TestS {

    public static void main(String[] args) {

        Scanner kb=new Scanner(System.in);
        String s;
        System.out.println("Choose an operation to apply :\n1.Een\n2.De");
        s=kb.nextLine();
        System.out.println(s);
        if(s=="1")
        {
            System.out.print(5454545);
        }

        else if(s=="2")
        {
            System.out.print(2);
        }


    }
}

3 个答案:

答案 0 :(得分:4)

您绝不应使用==比较字符串。使用.equals方法(有时是.equalsIgnoreCase方法):

if(s.equals("1"))
    // ...

由于您使用的是扫描仪,而您似乎需要输入数字,因此有更好的方法:

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {

        Scanner kb = new Scanner(System.in);

        System.out.println("Choose an operation to apply :\n1.Een\n2.De");

        while (!kb.hasNextInt())
            System.out.println(kb.next() + " is not a number. Try again...");

        int choice = kb.nextInt();
        System.out.println(choice);

        switch (choice) {
        case 1: System.out.print(5454545); break;
        case 2: System.out.print(2); break;
        default: System.out.println("Invalid choice."); break;
        }
    }
}

答案 1 :(得分:1)

问题是equals运算符。请记住==比较内存引用而不是对象值。我们知道String有一个String池,但在这种情况下它没有被使用。

尝试使用.equals()而不是==

答案 2 :(得分:0)

如果

改变你

if(s == null ? "1" == null : s.equals("1"))
{
    System.out.print(5454545);
}