• 异常处理


    import java.util.*;

    public class ATM1 {

     @SuppressWarnings("resource")

        public static void main(String[] args) {

          Scanner in=new Scanner(System.in);

           ATM atm=new ATM();

           int choose=0,num=0;

           String pw="";

           next:while(true){

               System.out.println("是否进入账户(01是):");

               int kk=in.nextInt();

               if(kk==0) break;

                else if(kk!=1){

               System.out.println("输入错误!");

                 continue;

                             }

               System.out.println("输入账户密码:");

               pw=in.next();

               if(atm.ifPass(pw)){

                   while(true){

                 showFace();

                 choose=in.nextInt();

                  switch(choose){

                  case 1:

                System.out.println("输入存款金额:");

                num=in.nextInt();

                

                atm.save(num);

                System.out.println("存款成功!");

                 System.out.println("当前余额:"+atm.getRest()+"");

                 break;

                 case 2:

                  System.out.println("请选择:");

                  int a[]={100,500,1000,1500,2000,5000};

                  for(int i=0;i<a.length;i++)

                  System.out.println((i+1)+"."+a[i]+"");

                  System.out.println("7.其他");

     int ch=in.nextInt();

     if(ch>=1&&ch<=6){

     if(atm.withdraw(a[ch-1]))

     System.out.println("取款成功!");

    else

     System.out.println("余额不足!");

     }

    else if(ch==7){

     System.out.println("请输入取款金额:");

    num=in.nextInt();

     if(atm.withdraw(num))

     System.out.println("取款成功!");

    else

     System.out.println("余额不足!");

     }

    else

     System.out.println("输入有误!");

    System.out.println("当前余额:"+atm.getRest()+"");

    break;

     case 3:

     System.out.println("账户号:");

    String s=in.next();

     System.out.println("转账金额:");

    int i=in.nextInt();

     if(atm.transfer(s, i))

     System.out.println("转账成功!");

    else

     System.out.println("转账失败!");

    System.out.println("当前余额:"+atm.getRest()+"");

    break;

     case 4:

     System.out.println("输入六位数密码:");

    String p=in.next();

     atm.setPassword(p);

     break;

     case 5:

     System.out.println("当前余额:"+atm.getRest()+"");

    break;

     default:

     continue next;

     }

     }

     }

     else

     System.out.println("密码错误!");

     }

     }

     //显示菜单方法

    public static void showFace(){

     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(" 6.退卡:");

    System.out.println("********************");

     System.out.println("请选择:");

     }

    }

    class PersonalAccount{

     private String passWord="123456";

     @SuppressWarnings("unused")

     private String number;//银行卡号

    private int money=0;

     public int getMoney(){return money;}

     public void setPw(String s){passWord=s;}

     public void addMoney(int x){money+=x;}

     public void minusMoney(int x){money-=x;}

     public boolean whetherPwTrue(String s){

     if(s.equals(passWord))

     return true;

     else return false;

     }

    }

    abstract class PATM{

     public abstract boolean withdraw(int x);

     public abstract void save(int x);

     public abstract boolean transfer(String s,int x);

     public abstract boolean ifPass(String s);

     public abstract int getRest();

     public abstract void setPassword(String s);//设置密码

    }

    class ATM extends PATM{

     private String numbers[]={"3235635","3256894",

     "3265894","6589458"};

     private PersonalAccount account=new PersonalAccount();

     public boolean withdraw(int x) {

     if(x>account.getMoney())

     return false;

     else{

     account.minusMoney(x);

     return true;

     }

     }

     public void save(int x) {

     account.addMoney(x);

     }

     public boolean transfer(String s, int x) {

     boolean flag=false;

     for(int i=0;i<numbers.length;i++)

     if(s.equals(numbers[i])) flag=true;

     if(x>account.getMoney()) flag=false;

     if(x<=account.getMoney()&&flag) account.minusMoney(x);;

     return flag;

     }

     public boolean ifPass(String s) {

     return account.whetherPwTrue(s);

     }

     public int getRest() {

     return account.getMoney();

     }

     public void setPassword(String s) {

     account.setPw(s);

     }

    }

    //判断数字并捕获可能出现的三种异常。

    public class MyException{

    public static void check(String str1)

    throws NullPointerException{

    //方法头抛出空指针异常  

    if(str1.length()>2){

    str1=null;

    }

    }

        System.out.println(str1.length());

    //空字符串的长度

    }

       char ch;

    for (int i=0;i<str1.length();i++){

    String str1;

    ch=str1.charAt(i);

         if(!Character.isDigit(ch))

          //判断参数中字符是否为数字

       throw new NumberFormatException();  //方法中抛出数字格式异常   

      }

    }

      public static void main(String args[])

    throws Exception{

    //抛出异常给系统处理    

    int num;

    try{

        check(args[0]);

         num=Integer.parseInt(args[0]);

         if (num>60)

        System.out.println("成绩为:"+num+"  及格");

        else

        System.out.println("成绩为:"+num+"  不及格");

    }

       catch(NullPointerException e){

         System.out.println("空指针异常:"+e.toString());

    }

        catch(NumberFormatException ex){

        System.out.println("输入的参数不是数值类型");

        }

         catch(Exception e){

        System.out.println("命令行中没有提供参数");

           }  

         }

        }

        //求阶乘并捕获可能出现的三种异常

        public class MyException{

         public static double multi(int n){

         if(n<0)

           throw new IllegalArgumentException("求负数阶乘异常");

           double s=1;

         for(int i=1;i<=n;i++)

         s=s*i;     

              return s;    

             }

         public static void main(String[] args){

              try{

              }

               int m=Integer.parseInt(arg[0]);

         System.out.println(m+"!="+multi(m));

          //调用方法multi求阶乘。      

          }

         catch (ArrayIndexOutOfBoundsException e){

         System.out.println("命令行中没提供参数!");      

          }

              catch (NumberFormatException e){

         System.out.println("应输入一个整数!");   

             }

          catch (IllegalArgumentException e){

         System.out.println("出现的异常是:"+e.toString());   

             } 

               finally{

         System.out.println("程序运行结束!");     

           }  

            }

         }

  • 相关阅读:
    设计模式学习笔记--迭代器模式
    设计模式学习笔记--组合模式
    设计模式学习笔记--备忘录模式
    Asp.Net Core IdentityServer4 中的基本概念
    Asp.Net Core 中间件应用实践中你不知道的那些事
    Asp.Net Core Filter 深入浅出的那些事-AOP
    ASP.NET CORE 内置的IOC解读及使用
    ASP.NET CORE 管道模型及中间件使用解读
    ASP.NET CORE 启动过程及源码解读
    Linux +Docker +Nginx 部署代理转发初探
  • 原文地址:https://www.cnblogs.com/keaidejava/p/6110555.html
Copyright © 2020-2023  润新知