zoukankan      html  css  js  c++  java
  • 异常

    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。

  • 相关阅读:
    Effective Java 第三版——26. 不要使用原始类型
    Effective Java 第三版——25. 将源文件限制为单个顶级类
    Effective Java 第三版——24. 优先考虑静态成员类
    Effective Java 第三版——23. 优先使用类层次而不是标签类
    Effective Java 第三版——22. 接口仅用来定义类型
    Effective Java 第三版——21. 为后代设计接口
    Effective Java 第三版——20. 接口优于抽象类
    Effective Java 第三版——19. 如果使用继承则设计,并文档说明,否则不该使用
    Effective Java 第三版——18. 组合优于继承
    Effective Java 第三版——17. 最小化可变性
  • 原文地址:https://www.cnblogs.com/clueless/p/6099718.html
Copyright © 2011-2022 走看看