public class Pen
{
    public static void main(String[] args)
    {
Atm a=new Atm();
a.dl();
    }
}
public class Ka
{
//卡着对象的属性 id 密码 余额 
     int [] a={111222,222111};
     String [] b={"111111","222222"};
     int [] y={20000,30000};
     public String mi(int i)
     {
int j=0;
for(;j<a.length;j++)
        {
    if(a[j]==i)
    {
break;
            }
    else
    {
if(j==a.length-1)
{
         System.out.println("帐号有误");
     Atm cc=new Atm();
             cc.dl();
}
    }
        }
return b[j];
     }
     public int ye(int i)
     {
int j;
for(j=0;j<a.length;j++)
{
    if(a[j]==i)
    {
break;
    }
}
return y[j];
     }  
}
import java.util.Scanner;
public class Atm
{
     Scanner put=new Scanner(System.in);
     public String zjm="1.取款2.查询3.转账4.退出";
     public String mi="密码错误请重新输入";
     public String mt="三次密码错误,系统退出";
     public String ka="请输入你的卡号";
     public String mm="请输入你的密码";
     public String kaw="卡号错误";     public String ye="余额不足";
     public String je="请输入你的要取的金额";
     public String je1="操作成功你的余额为:";
     public String je2="按1继续操作,任意键返回主菜单";     public String zz="请输入你的帐号";
     public String zz1="请输入要转账的金额";
     public String zz2="帐号不对";
     public String zz3="1继续操作任意键返回";
     public static int my;
     public static String pass;
//输入方法 
     public String ssr()
     {
String i=put.next();
return i;
     } 
     public int isr()
     {
int i=put.nextInt();
return i;
     }
//输出方法
     public void sc(String s)
     {
System.out.println(s);
     }
     public void sc(int s)
     {
System.out.println(s);
     }
//登陆判断
     public boolean pd(String i)
     {
return pass.equals(i)||i.length()==18?true:false;
     }
     public boolean pdzz(String i)
     {
return i.length()==18?true:false;
     }
     public boolean pd(int i)
     {
return i<my?true:false;
     }
//登陆方法
     public void dl()
     {
int x=0;
sc(ka);
Ka ka=new Ka();
int num=isr();
pass=ka.mi(num);
my=ka.ye(num);
sc(mm);
        while(true)
{
    if(pd(ssr()))
    {
        zjm();
break;
    }
    else
    {
        x++;
        if(x>=3)
{
    sc(mt);
    break;
}
sc(mi);
    }
}
     }
//主菜单 功能入口
    public void zjm()
    {
sc(zjm);
switch(isr())
{
    case 1:qu();break;
    case 2:ye();break;
    case 3:zz();break;
    case 4:System.exit(0);break;
    default :   ;break;
}
    }
//取款
    public void qu()
    {
sc(je);
int i=isr();
if(pd(i))
{
    my=my-i;
    sc(je1);
    sc(my);
    sc(je2);
    switch(isr())
    {
case 1:qu();break;
default:zjm();break;
            }
}
else
{
    sc(ye);
    sc(je2);
    switch(isr())
    {
case 1:qu();break;
default:zjm();break;
            }
}
    }
//查询余额的方法
    public void ye()
    {
sc(je1);
sc(my);
zjm();
    }
//转账
    public void zz()
    {
sc(zz);
if(pdzz(ssr()))
{
     sc(zz1);
     int i=isr();
     if(pd(i))
     {
         my=my-i;
         sc(je1);
         sc(my);
         zzf();
     }
     else
     {
sc(ye);
zzf();
             }
}
else
{
    sc(zz2);
    zzf();
}
    }
//转账返回
    public void zzf()
    {
sc(zz3);
switch(isr())
{
    case 1:zz();break;
    default:zjm();break;
}
    } 
}

解决方案 »

  1.   

    不好意思格式有点乱,论坛好像不支持 tab切换的空格!!
      

  2.   

    小弟弟你好!我提些建议吧:1:
    //卡着对象的属性 id 密码 余额 
    int [] a={111222,222111};应该用属性来取代数组,比如这个可以设计成为:private int id;
    private String password;
    private int balance;如果用数组的话 a[0], a[1] 基本上没人会知道这些代表什么2:菜单方面。菜单项和菜单项处理逻辑都写在了一起,如果今后要再增加一个菜单项,那代码就得重新改动了。建议:使用 XML 配置文件进行菜单项的配置,使用命令模式来处理菜单逻辑。这样的话,以后要增加一个菜单项,只要在 XML 配置中增加一个新的,再增加一个实现命令接口的类就可以了,呵呵。
      

  3.   

    这个感觉和当初刚写SQL存储过程一样
      

  4.   

    再有下次发代码是注意CSDN 有个带 #的图标
    用那个把你代码格式化下
      

  5.   


    import java.util.Scanner;
    public class Atm
    {
         Scanner put=new Scanner(System.in);
         public String zjm="1.取款2.查询3.转账4.退出";
         public String mi="密码错误请重新输入";
         public String mt="三次密码错误,系统退出";
         public String ka="请输入你的卡号";
         public String mm="请输入你的密码";
         public String kaw="卡号错误";     public String ye="余额不足";
         public String je="请输入你的要取的金额";
         public String je1="操作成功你的余额为:";
         public String je2="按1继续操作,任意键返回主菜单";     public String zz="请输入你的帐号";
         public String zz1="请输入要转账的金额";
         public String zz2="帐号不对";
         public String zz3="1继续操作任意键返回";
         public static int my;
         public static String pass;
    //输入方法 
         public String ssr()
         {
    String i=put.next();
    return i;
         } 
         public int isr()
         {
    int i=put.nextInt();
    return i;
         }
    //输出方法
         public void sc(String s)
         {
    System.out.println(s);
         }
         public void sc(int s)
         {
    System.out.println(s);
         }
    //登陆判断
         public boolean pd(String i)
         {
    return pass.equals(i)||i.length()==18?true:false;
         }
         public boolean pdzz(String i)
         {
    return i.length()==18?true:false;
         }
         public boolean pd(int i)
         {
    return i<my?true:false;
         }
    //登陆方法
         public void dl()
         {
    int x=0;
    sc(ka);
    Ka ka=new Ka();
    int num=isr();
    pass=ka.mi(num);
    my=ka.ye(num);
    sc(mm);
            while(true)
    {
        if(pd(ssr()))
        {
            zjm();
    break;
        }
        else
        {
            x++;
            if(x>=3)
    {
        sc(mt);
        break;
    }
    sc(mi);
        }
    }
         }
    //主菜单 功能入口
        public void zjm()
        {
    sc(zjm);
    switch(isr())
    {
        case 1:qu();break;
        case 2:ye();break;
        case 3:zz();break;
        case 4:System.exit(0);break;
        default :   ;break;
    }
        }
    //取款
        public void qu()
        {
    sc(je);
    int i=isr();
    if(pd(i))
    {
        my=my-i;
        sc(je1);
        sc(my);
        sc(je2);
        switch(isr())
        {
    case 1:qu();break;
    default:zjm();break;
                }
    }
    else
    {
        sc(ye);
        sc(je2);
        switch(isr())
        {
    case 1:qu();break;
    default:zjm();break;
                }
    }
        }
    //查询余额的方法
        public void ye()
        {
    sc(je1);
    sc(my);
    zjm();
        }
    //转账
        public void zz()
        {
    sc(zz);
    if(pdzz(ssr()))
    {
         sc(zz1);
         int i=isr();
         if(pd(i))
         {
             my=my-i;
             sc(je1);
             sc(my);
             zzf();
         }
         else
         {
    sc(ye);
    zzf();
                 }
    }
    else
    {
        sc(zz2);
        zzf();
    }
        }
    //转账返回
        public void zzf()
        {
    sc(zz3);
    switch(isr())
    {
        case 1:zz();break;
        default:zjm();break;
    }
        } 
    }
    public class Ka
    {
    //卡着对象的属性 id 密码 余额
         int [] a={111222,222111};
         String [] b={"111111","222222"};
         int [] y={20000,30000};
         public String mi(int i)
         {
    int j=0;
    for(;j<a.length;j++)
            {
        if(a[j]==i)
        {
    break;
                }
        else
        {
    if(j==a.length-1)
    {
             System.out.println("帐号有误");
         Atm cc=new Atm();
                 cc.dl();
    }
        }
            }
    return b[j];
         }
         public int ye(int i)
         {
    int j;
    for(j=0;j<a.length;j++)
    {
        if(a[j]==i)
        {
    break;
        }
    }
    return y[j];
         }  
    }
    public class Pen
    {
        public static void main(String[] args)
        {
    Atm a=new Atm();
    a.dl();
        }
    }
      

  6.   

    其实要是交作业就可以交了~~~~~~~~~~
    你要某高手帮你优化,如果是按你的程序来的话最多,就是帮你精简点命令,多用点函数。这种优化,大多数高手们都不愿意来着~~~~~~~~~~
    真要按高手们的思想优化的话~~~~~~~~~~~你就去网上下载SQL.XML·······
    还要配置安装新的数据库,何况你没用过。不知道又会出多少新问题~~~~~~~~复杂了去了~~~~~~~
    不过要是真有比较心地善良的好人~~~~~~~
    按你的程序帮你修改的话~~~~~~恩,恭喜你~~~~~~~~~
    你运气真不错~~~~~~~~~~~~