1)在定义一个银行类Bank 时, 有deposit、withdraw 、showBalance 等方法。若取钱数大于余额则作为异常处理(In SuffiCie ntFu ndsExceptio n)。产生异常的条件是余额少于取额,因此是否抛出异常要判断条件,要定义好自己的异常类。package
ex91;
public class Bank {
public double total=0;
Bank(double d) {
total=d;
}
public void deposit(double d) {
total+=d; }
public void withdraw(double d) {
total—=d;
}
public void showBalance(){
System.out.println(total);
}
}
package ex91;
public class BankException extends Exception {
String message;
BankException(double d)
{ message=d+"非法取款余额”;
}
public String getMessage() {
return message;
}
}
package ex91;
import java.util.Scanner;
public class BankTest {
/** * @param args */
public static void main(String[] args) throws BankException { // TODO Auto-generated method stub
Bank bk=new Bank(1236。123);
bk。showBalance();
Scanner sc = new Scanner(System.in);
int i=sc.nextInt();
bk.withdraw(i);
if(bk.total<0){
BankException be=new BankException(i); throw(be);
}
else bk.showBalance();
}
}
( 2)定义 Triangle 类用于表示三角形,其任意两个边的和必须大于第三条边。定义IllegalTriangleException 用于声明任何违反以上规则的输入. Triangle 类的构造方法如下:
public Triangle(double side1, double side2, double side3) throws IllegalTriangleException {
// Implement it
}
package ex92;
import java。io.IOException;
class IllegalTriangleException extends Exception {
// private static final long serialVersionUID = 1L;
}
package ex92;
import java.io。IOException;
public class Test {
public static void main(String[] args) throws IOException { Triangle t1;
try {
t1 = new Triangle(3, 1, 2);
} catch (IllegalTriangleException e) { e.printStackTrace();
SyStem.out。println(”不合法的三角形”); return;
}
SyStem.out。println(”Side1=” + t1。Side1 + ”,Side2=” + t1。Side2 + ",Side3=" + t1.Side3);
}
}package ex92;
claSS Triangle {
double Side1;
double Side2;
double Side3;
public Triangle(double Side1, double Side2, double Side3) throwS IllegalTriangleException {
Super();
if (Side1 + Side2 〈= Side3 || Side1 + Side3 <= Side2 || Side2 +
Side3 〈= Side1)
throw new IllegalTriangleException();
}
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
}
( 3)要求声明定义 2 个异常类: NoLetterException 类和 NoDigitException 类。再定义一个 People 类,该类中的 void printLetter(char c) throws 方法抛出NOLetterEXCePtiOn 异常,VOid PrintDigit(char C)方法抛出 NODigitEXCePtiOn 异常。主类 ExceptionExample 对 2 个方法分别测试。
PaCkage eX93;
PubliC Class EXCePtiOnEXamPle {
PubliC statiC VOid main (String args[ ]){
PeOPle PeOPle=new PeOPle( );
fOr(int i=0;i<128;i++) {
try{
PeOPIe.printLetter((char)i); //调用 PeOPIe对象的
PrintLetter 方法并
处理异常
}
catch(NOLetterEXcePtiOn e){
SyStem。out.println(”发生异常:”+e。getMessage());
e。Print();
}
}
fOr(int i=0;i<128;i++) {
try{
people.printDigit((char)i); // 调用 people对象的
PrinDigit 方法并处
理异常
}
catch(NODigitEXcePtiOn e){
SyStem。out.println(”发生异常:"+e.getMessage());
}
}
}
}
Package eX93;
class NODigitEXcePtiOn eXtends EXcePtiOn{
Public char Print(){
return '*’;
}
}
Package eX93;
imPOrt jaVa.iO。IOEXcePtiOn;
class NoLetterException extends Exception{
public char print(){
return '#';
}
}
package ex93;
class People{
public void printLetter(char c)throws NoLetterException{ if(c〉=’a'&&c〈=’z'){
throw new NoLetterException();
}
else
SyStem.out.pri ntln ("请输出该字符:”+c);
}
public void printDigit (char c)
throwS NoDigitException{
if(c〉=’0’&&c〈=’9'){
throw new NoDigitException();
}
elSe
SyStem。out。pri ntln (”请输出该字符:”+c);
}
}
(4)CircleArea 类是一个命令行输入的计算器,用于计算圆的面积,程序从命令行接收半径. 如果命令行输入的是非数字,则程序抛出异常, 显示消息通知用户必须输入数字。 e 类用于表示三角形,其任意两个边的和必须大于第三条边。定义IllegalTriangleException 用于声明任何违反以上规则的输入。 Triangle 类的构造方法如下:
public Triangle(double Side1, double Side2, double Side3) throwS IllegalTriangleException {
// Implement it
}
package ex94;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public claSS TeStCircle {
public Static void main(String[] argS){
while(true) {
SyStem.out。println("PleaSe enter a radiuS of the ci rcle: ”);
try{
BufferedReader br = new BufferedReader(new
InputStreamReader(SyStem。in));
double radiuS = Double。valueOf(br.readLine()。trim());
System。out。println(”Your enter the radius is:” +
radius); double area = Math。PI * radius * radius;
System.out。println(”The circle area is: ” + area); break;
}catch(Exception e) {
the
System.out。println("Your input is not number,Please enter the correct radius!");
}
}
}
}