校园卡信息管理系统
===================
1.修改密码
2.消费
3.查询消费明细
4.余额查询
5.等级考试报名
6.图书借阅
7.退出
===================
请选择你的操作:
1
请输入卡的当前密码:
Exception in thread "main" java.lang.NumberFormatException: For input string: ""        at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:48)
        at java.lang.Long.parseLong(Long.java:415)
        at java.lang.Long.valueOf(Long.java:509)
        at card.changepassword(campusecard.java:98)
        at campusecard.main(campusecard.java:11)
请按任意键继续. . .
这个到底是个什么错误啊
我刚刚学java太菜没有办法啊
帮帮忙
涉及的代码
........
    void changepassword()//输入内容没有限制,需要改进
    {
String s1="",s2="",s0="";
int count=0;
long number;
while(true)
{
System.out.println("请输入卡的当前密码:");
      try
      {
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
s1=in.readLine();
     }catch(IOException e){
System.err.println(e.toString());
}
        number=Long.valueOf(s1).longValue();
        if(number!=password)
       {
System.out.println("密码错误,请重新输入.");
count++;
     }
     else
     break;
     if(count==3)
     {
     System.out.println("小样,不要拿别人的卡当作自己的.");
     return;
        }
 }
     while(true)
{
      System.out.println("请输入你的新密码:");
     try
     {
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
s1=in.readLine();
     }catch(IOException e){}
     System.out.println("请再次输入你的新密码:");
     try
{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
s2=in.readLine();
     }catch(IOException e){}
     if(!s1.equals(s2))
     System.out.println("输入密码不一致,请重新输入.");
     else
     {
password=Long.valueOf(s1).longValue();
System.out.println("修改密码成功!");
     return;
    }
     }
    }
.........

解决方案 »

  1.   

    number=Long.valueOf(s1).longValue();应该是这一句的异常。你这里如果输入的有字母之类的(即比如s1为“12we”)就会抛出NumberFormatException(If the string cannot be parsed as a long.) 异常了
      

  2.   

    System.out.println("小样,不要拿别人的卡当作自己的.");呵呵~~楼主的这个比较有趣。如果只可以输入数字的话那么应该在输入的框那里写一个监听的事件
      

  3.   

    应该对用户的输入做错误检查,若不为数字,或指定的命令,则给予提示,而不是不加区分直接处理,
    String.parseLong显然对于数字而言的,若为字母,则必然出现NumberFormatException.