我的程序首先显示两个选项,并要求用户选择一个选项,问题是我的程序忽略了扫描仪的输入,即使条件为真也不进入块,所以问题是什么!
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);
}
}
}
答案 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);
}