String str;
str = scan.next();
while(str != "a" || str != "b" )
{
System.out.print("Error input! Re-input, please! ");
str = scan.nextLine();
}按照我的逻辑,难道不是当str 不等于“a”或“b”的时候运行
System.out.print("Error input! Re-input, please! ");
str = scan.nextLine();但是为什么不行呢,反而while(str == "a" || str == "b" )
{
System.out.print("Error input! Re-input, please! ");
str = scan.nextLine();
}
对了,难道Java中的String 和C++不同小生是java初学者,请教各位高人了,谢谢:)

解决方案 »

  1.   

    while(str != "a" || str != "b" )?这种逻辑有意义吗?
      

  2.   

    你的str != "a" || str != "b" 包括str == "a" || str == "b",
    都是判断String对象是否相等;你的本意是判断内容,使用str.equals("a")方法,在你的第二部分恰好“对了”,与JAVA中String对象在vm中的实现有关,"a"和你的str都指向同一个东西,纯属巧合。
      

  3.   

    在java里
    你这样写比的是对象的地址,而不是对象内容
    比内容的话参见String.equlas() 方法