异常处理不工作?(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.");
}