Problem D: 异常2
Problem Description
检查危险品程序:生成货物类、机器类,货物类有属性name,机器类有检测的check方法,若货物名称是炸弹、毒药、刀具,则抛出异常提示。
代码如下:
import java.util.Scanner;
class goods{
String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
// 你的代码将嵌入这里
class Main{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
String input=sc.nextLine();
goods g=new goods();
g.setName(input);
machine m=new machine(g);
try{
m.check();
}catch(dangerException e){
e.showMessage();
}
}
}
Input Description:
bomb 或 poison 或 knife
Output Description:
bomb 或 poison 或 knife
Dangerous!!
题目分析
个人觉得这道题目易错点是:
1.java中进行两个字符串变量或一个字符串变量与一个字符串常量进行比较时不可以用“==”,因为使用== 比较的是两个字符串的引用是否相等,
可以理解为比较两个字符串在内存中的地址是否相等。
2.输入为随意一件货物,并且进行输出!!!注意字符串不要含空格
剩下的异常处理部分和上一道题目差不多,用throws关键字修饰方法,用throw在函数中抛出异常。
接下来是我的ac答案:
1 class dangerException extends Exception{ 2 String massage; 3 public dangerException(){} 4 public dangerException( String x ) 5 { 6 this.massage = x; 7 } 8 void showMessage() 9 { 10 System.out.println(massage); 11 } 12 } 13 class machine{ 14 String name; 15 public machine( goods g ) 16 { 17 name = g.name; 18 System.out.println(name); 19 } 20 void check() throws dangerException 21 { 22 if( name.equals("bomb") || name.equals("poison") || name.equals("knife") ){ 23 throw new dangerException("Dangerous!!"); 24 } 25 } 26 }