异常

import java.util.*;
public class ScoreRank {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner in=new Scanner(System.in);
        System.out.println("请输入学生的成绩(100以内整数)");
        String score=in.next();
        int flag=1;
        try 
        {
            if(score.length()>2)
            {
                if(!score.equals("100"))
                    flag=0;
            }
            if(score.charAt(0)=='0')
            {
                flag=0;
            }
            for(int i=1;i<score.length();i++)
            {
                if(score.charAt(i)>'9'||score.charAt(i)<'0')
                {
                    flag=0;
                }
            }
            if(flag==0)
            {
                MyException e=new MyException("非法输入(不符合格式或包含非数字项或超出限制)");
                throw e;
            }
        
        }
        catch(MyException e)
        {
            System.out.println(e);
        }
        //成绩评判
        if(flag==1)
        {
            int s=Integer.parseInt(score);
            if(s<60)
                System.out.println("不及格");
            else 
            {
                System.out.println("及格");
                if(s>60&&s<=70)
                    System.out.println("中");
                if(s>70&&s<=80)
                    System.out.println("良");
                if(s>80)
                    System.out.println("优");
            }
        }
    }

}
class MyException extends Exception
{
    MyException(String x)
    {
        super(x);
    }
}

运行结果截图:

import java.util.*;
public class ATMRe {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //如果使用的是Account类数组,可以使用以下方式直接add添加
        //目前其中只有获得余额的方法
        Vector<Information> ac=new Vector<Information>();
        
        Scanner in=new Scanner(System.in);
        Manage test=new Manage("Tom","6212260402013456234","123456",1000);
        int c1,c2;
        System.out.println("请输入密码");
        int flag=0;
        try
        {
            int error=0;
            for(int i=0;i<3;i++)
            {
                String p=in.next();
                if(!p.equals(test.getpassword()))
                {
                    error++;
                }
                else
                {
                    flag=1;
                    break;
                }
            }
                if(error==3)
                {
                    PasswordException e1=new PasswordException("输入密码错误,银行卡被锁死");
                    throw e1;
                }
        }
        catch(PasswordException e)
        {
            System.out.println(e);
        }
        
        if(flag==1)
        {
            while(true)
            {
                test.window();
                System.out.println("请选择");
                c1=in.nextInt();
                test.setchoice(c1);
                if(test.getchoice()==1)
                {
                    System.out.println("请输入存款金额");
                    double x=in.nextDouble();
                    try
                    {
                        if(x%100!=0)
                        {
                            DepositException e2=new DepositException("输入钱数不是100的整数");
                            throw e2;
                        }
                        test.deposit(x);
                    }
                    catch(DepositException e2)
                    {
                        System.out.println(e2);
                    }
                    System.out.println("用户余额为"+test.getbalance()+"元");
                }
                if(test.getchoice()==2)
                {
                    test.withdrawwindow();
                    System.out.println("请选择");
                    c2=in.nextInt();
                    if(c2==8)
                        break;
                    else
                    {
                        test.withdraw(c2);
                    }
                }
                if(test.getchoice()==3)
                {
                    System.out.println("请输入转账卡号(19位数字)、转账金额");
                    String n=in.next();
                    double m=in.nextDouble();
                    if(m>test.getbalance())
                    {
                        System.out.println("转账金额超出余额,转账失败");
                    }
                    else
                    {
                    try
                    {
                        if(n.length()>19||n.length()<19)
                        {
                            TransferException e3=new TransferException("非法输入(银行卡号输入错误)");
                            throw e3;
                        }
                        for(int i=0;i<19;i++)
                        {
                            if(n.charAt(i)<'0'||n.charAt(i)>'9')
                            {
                                TransferException e3=new TransferException("非法输入(银行卡号输入错误)");
                                throw e3;
                            }
                        }
                        test.transfer(n, m);
                    }
                    catch(TransferException e3)
                    {
                        System.out.println(e3);
                    }
                    
                    }
                    System.out.println("用户余额为"+test.getbalance()+"元");
                    
                }
                if(test.getchoice()==4)
                {
                    System.out.println("请输入修改的密码(6位数字)");
                    String z=in.next();
                    
                    try
                    {
                        if(z.length()>6||z.length()<6)
                        {
                            RePasswordException e4=new RePasswordException("非法输入(密码位数错误限制或包含非数字项)");
                            throw e4;
                        }
                        for(int i=0;i<6;i++)
                        {
                            if(z.charAt(i)>'9'||z.charAt(i)<'0')
                            {
                                RePasswordException e4=new RePasswordException("非法输入(密码位数错误或包含非数字项)");
                                throw e4;
                            }
                        }
                        test.setpassword(z);
                    }
                    catch(RePasswordException e4)
                    {
                        System.out.println(e4);
                    }
                    
                    if((test.getpassword()).equals(z))
                        System.out.println("修改成功");
                    else 
                    {
                        System.out.println("修改失败,请重新选择修改密码操作");
                    }
                }
                if(test.getchoice()==5)
                {
                    System.out.println("用户余额为"+test.getbalance()+"元");
                }
            }
        }
        else
        {
            System.out.println("用户输入错误密码,该卡已被锁定,无法操作!");
        }
    }

}
class Information
{
    public void outputbalance(Vector<Account> ac)
    {
        for(Account a:ac)
        {
            a.getbalance();
        }
    }
}
class Manage extends Account
{
    Manage(String n,String i,String p,double b)
    {
        name=n;
        id=i;
        password=p;
        balance=b;
    }
    public void window()
    {
        System.out.println("************");
        System.out.println("主窗口");
        System.out.println("1.存款");
        System.out.println("2.取款");
        System.out.println("3.转账汇款");
        System.out.println("4.修改密码");
        System.out.println("5.查询余额");
        System.out.println("************");
    }
    public void withdrawwindow()
    {
        System.out.println("************");
        System.out.println("取款窗口");
        System.out.println("1.100");
        System.out.println("2.500");
        System.out.println("3.1000");
        System.out.println("4.1500");
        System.out.println("5.2000");
        System.out.println("6.5000");
        System.out.println("7.其他金额");
        System.out.println("8.退卡");
        System.out.println("9.返回");
        System.out.println("************");
    }
    public void withdraw(int c)
    {
        choice=c;
        if(choice==1) 
        {
                if(balance-100>=0)
                    balance=balance-100;
                else
                {
                    System.out.println("余额不足,取款失败");
                    window();
                }
        }
        if(choice==2) 
        {
            if(balance-500>=0)
                balance=balance-500;
            else
            {
                System.out.println("余额不足,取款失败");
                window();
            }
        }
        if(choice==3) 
        {
            if(balance-1000>=0)
                balance=balance-1000;
            else
            {
                System.out.println("余额不足,取款失败");
                window();
            }
        }
        if(choice==4) 
        {
            if(balance-1500>=0)
                balance=balance-1500;
            else
            {
                System.out.println("余额不足,取款失败");
                window();
            }
        }
        if(choice==5) 
        {
            if(balance-2000>=0)
                balance=balance-2000;
            else
            {
                System.out.println("余额不足,取款失败");
                window();
            }
        }
        if(choice==6) 
        {
            if(balance-5000>=0)
                balance=balance-5000;
            else
            {
                System.out.println("余额不足,取款失败");
                window();
            }
        }
        if(choice==7)
        {
            System.out.println("请输入存款金额");
            double x=input.nextDouble();
                if(balance>=x)
                    balance=balance-x;
                else
                {
                    System.out.println("余额不足,取款失败");
                    window();
                }
                
        }
        if(choice==9)
            window();
    }
    public void deposit(double d)
    {
        balance=balance+d;
    }
    public void transfer(String a,double t)
    {
        if(balance>=t)
        {
            balance=balance-t;
            System.out.println("转账成功");
        }
        else
        {
            System.out.println("余额不足,无法转账");
        }
    }
}
class Account
{
    Scanner input=new Scanner(System.in);
    public String id;
    public String name;//姓名
    public int choice;//操作
    public String password;//密码
    public double balance;//余额
    Account(){}
    public double getbalance()
    {
        return balance;
    }
    public void setchoice(int c)
    {
        choice=c;
    }
    public int getchoice()
    {
        return choice;
    }
    public String getpassword()
    {
        return password;
    }
    public void setpassword(String p)
    {
        password=p;
    }
}
class PasswordException extends Exception
{
    PasswordException(String x)
    {
        super(x);
    }
}
class DepositException extends Exception
{
    DepositException(String x)
    {
        super(x);
    }
}
class RePasswordException extends Exception
{
    RePasswordException(String x)
    {
        super(x);
    }
}
class TransferException extends Exception
{
    TransferException(String x)
    {
        super(x);
    }
}

运行结果截图:

 

 

 

当在捕获到异常的处理代码里加入system.exit()时,finally的代码块是不会执行的。捕获异常的规则是尽量优先捕获具体的异常。

finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。在以下4种特殊情况下,finally块不会被执行:
1)在finally语句块中发生了异常。
2)在前面的代码中用了System.exit()退出程序。
3)程序所在的线程死亡。
4)关闭CPU。

 

posted @ 2016-11-25 11:14  Steerner  阅读(273)  评论(0)    收藏  举报