异常处理不工作?(JAVA) 类BadFoodException扩展异常{ //做点什么 } 类读取器{ 私人字符串food1; 私人字符串2; 公共静态void main(字符串参数[]) { 读卡器m=新读卡器(args); 对于(inti=0;i

异常处理不工作?(JAVA) 类BadFoodException扩展异常{ //做点什么 } 类读取器{ 私人字符串food1; 私人字符串2; 公共静态void main(字符串参数[]) { 读卡器m=新读卡器(args); 对于(inti=0;i,java,exception,exception-handling,Java,Exception,Exception Handling,将if(food==“banana”)更改为if(“banana.equals(food)) 在java中,=运算符检查两个引用是否引用了相同的对象。如果您想检查两个对象是否有意义地相等,则应使用.equals()。字符串在java中是不可变的。必须使用.equals(object)方法来比较字符串对象 注意:=检查两个引用是否相等,即它们是否指向同一对象。但是,您应该检查字符串实例是否有意义地等效。如果(食物==“香蕉”)替换它 class BadFoodException extends E

if(food==“banana”)
更改为
if(“banana.equals(food))


在java中,
=
运算符检查两个引用是否引用了相同的对象。如果您想检查两个对象是否有意义地相等,则应使用
.equals()

字符串在java中是不可变的。必须使用
.equals(object)
方法来比较字符串对象

注意:
=
检查两个引用是否相等,即它们是否指向同一对象。但是,您应该检查
字符串
实例是否有意义地等效。

如果(食物==“香蕉”)替换它

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.");
    }

}

只是把逗号改成了dot@Flow,我不认为这是重复的,OP不知道问题出在哪里。在我们回答之后,只有他/她可能知道这些。@AbimaranKugathasan:答案与重复问题中的答案几乎相同。这就是为什么它可以被认为是重复的;问题是比较
String
使用
==
@makoto:是的,问题在于比较字符串,但是,OP在得到答案之前不知道这一点。正确,但这并不意味着它不是重复的。
 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.");
}