发布时间:2019-07-31 09:14:32
public class Application {
public static void main(String[] args) {
Machine m=new Machine();
Goods goods ;
goods = new Goods();
String[] str={"炸药","苹果","刀子","iphone x","AK47","SWITCH","滑板"};
for(int i=0;i<str.length;i++) {
goods.setName(str[i]);
if(goods.getName().equals("炸药")||goods.getName().equals("刀子")||goods.getName().equals("AK47")) {
goods.setisDanger(true);
}
else {
goods.setisDanger(false);
}
try {
m.checkBag(goods);
}
catch(DangerException e){
e.toShow();
}
}
}
}
class DangerException extends Exception{
String message;
DangerException(String s) {
message=s+"属于危险品!";
}
DangerException() {
message="属于危险品!";
}
void toShow() {
System.out.println(message);
}
}
class Goods {
boolean isDanger;
String name;
Goods(String s) {
name=s;
}
void setisDanger(boolean b) {
isDanger = b;
}
boolean isDanger() {
return isDanger;
}
String getName() {
return name;
}
}
class Machine {
void checkBag(Goods goods) throws DangerException{
if(goods.isDanger()) {
throw new DangerException(goods.getName());
}
else {
System.out.println(goods.getName()+"不是危险品");
}
}
}
程序有两个基本的错
1。goods = new Goods();
你的Goods不存在没有参数的构造,你的构造是
Goods(String s) { name = s; }
所以,最简单的,改
goods = new Goods("");
2。goods.setName(str[i]);
你的goods没有setName这个方法,所以要在Goods类中加
void setName(String s) { name=s; }
结果
炸药属于危险品!苹果不是危险品刀子属于危险品!iphone x不是危险品AK47属于危险品!SWITCH不是危险品滑板不是危险品
没有新建string类型的对象,不满足条件,满意请采纳
你goods这个类的构造器不是没有使用默认的无参构造器嘛,你现在的构造器是使用的带一个string的参数,也就是说你在new goods的时候需要new Goods(String)带个参数哈