class BadFoodException extends Exception{
//Do something
}
class Reader {
private String food1;
private String food2;
public static void main(String args[])
{
Reader m = new Reader(args);
for (int i=0; i<args.length; i++){
try
{
m.checkfood(args[i]);
}
catch(BadFoodException e){System.out.println(args[i]+ " caught");}
}
}
private Reader(String [] args){
food1=args[0];
food2=args[1];
}
void checkfood(String food) throws BadFoodException
{ if( food == "banana")
throw new BadFoodException();
System.out.println(food + " passed through.");
}
}
我正在通过命令行传递两种食物 - 香蕉和芒果。 当食物是香蕉时,checkfood方法应该抛出异常..芒果应该通过。然而两者都是通过而不是?为什么呢?
答案 0 :(得分:6)
将if( food == "banana")
更改为if("banana".equals(food))
。
在java ==
运算符检查中,两个引用都引用相同的对象。如果您打算检查两个对象是否有意义,则应使用.equals()
。
答案 1 :(得分:0)
字符串在Java中是不可变的。您必须使用.equals(Object)
方法来比较String对象。
注意:==
检查两个引用的相等性,即它们是否指向同一个对象。但是,您应该检查String
个实例是否有意义。
答案 2 :(得分:0)
if(food ==&#34; banana&#34;)替换它,
if (food.intern() == "banana"){
do your stuff here
}
void checkfood(String food) throws BadFoodException
{ if( food.intern() == "banana")
throw new BadFoodException();
System.out.println(food + " passed through.");
}