由于刚刚学java程序刚刚写了一半就有一个小问题都搞不定,请高手帮帮我.
代码:
import java.io.*;
import java.awt.*;
public class campusecard
{
public static void main(String args[])
{
card mycard=new card();
int choice=0;
while(true)
{
choice=mycard.menu();
    switch(choice)
    {
     case 1:
     mycard.changepassword();
     break;
     case 2:
     mycard.cardconsume();
    break;
    case 3:
     mycard.searchrecord();
    break;
    case 4:
    System.out.println("你的校园卡中剩余的金额为:"+mycard.showleftmoney());
    break;
    case 5:
      mycard.testsignup();
    break;
    case 6:
    mycard.borrowbooks();
    break;
     case 7:
    return;
   }
   }
}
}
class card
{
static final long number=1103101134;
long password=123456;
float leftmoney;
boolean connected;
int bookcount;
card()
{
leftmoney=50;
connected=false;
    }
    int menu()
    {
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("6.图书借阅");
System.out.println("7.退出");
System.out.println("===================");
System.out.println("请选择你的操作:");
char c='A';
try{
c=(char)System.in.read();
}
catch(IOException e)
{
System.err.println(e.toString());
}
int choice=c-'0';
int count=0;
while(choice>7||choice<1)
{
count++;
if(count==3)
{
System.out.println("小样,你在捣蛋。");
System.exit(0);
             }
System.out.println("小样,操作错误,请重新选择:");
try{
c=(char)System.in.read();
}catch(IOException e){};
    choice=c-'0';
    }
return choice;
}
    void changepassword()//输入内容没有限制,需要改进
    {
String s2=new String();
    String s1=new String();
int count=0;
long number=0,number1=0,number2=0;
System.out.println("请输入卡的当前密码:");
try{
   InputStreamReader br=new InputStreamReader(System.in);
    BufferedReader in=new BufferedReader(br);
    L0:
while(true)
{
try{
 s1=in.readLine();
         number=Long.parseLong(s1);
          if(number!=password)
            {
              System.out.println("密码错误,请重新输入.");
                  count++;
                }
             else
                    break;
                  if(count==3)
       {
       System.out.println("小样,不要拿别人的卡当作自己的.");
       return;
                        }
                   }catch(NumberFormatException e)
                     {
              System.out.println("密码不能是非数字!请重试!");
              continue L0;
             }
             break;
}
}catch(Exception e)
{
System.out.println(e);
}
 try{
  Label1:
          while(true)
      {
         System.out.println("请输入你的新密码:");
         InputStreamReader br=new InputStreamReader(System.in);
         BufferedReader inm=new BufferedReader(br);
     try{
      s1=inm.readLine();
             number1=Long.parseLong(s1);
         }catch(NumberFormatException e)
                     {
              System.out.println("密码不能是非数字!请重试!");
              continue Label1;
             }
     break;
     }
}catch(Exception e)
{
System.out.println(e);
 }
     System.out.println("请再次输入你的新密码:");
     try
     {
        L2:
        while(true)
         {
  InputStreamReader br=new InputStreamReader(System.in);
          BufferedReader inn=new BufferedReader(br);
try{
s2=inn.readLine();
        number2=Long.parseLong(s2);
      }catch(NumberFormatException e)
                     {
              System.out.println("密码不能是非数字!请重试!");
              continue L2;
             }
             break;
     }
}catch(Exception e)
{
System.out.println(e);
}
     if(number1!=number2)
     System.out.println("输入密码不一致,请重新输入.");
     else
     {
password=number1;
System.out.println("修改密码成功!");
     return;
    }
    }
    void cardconsume()
    {
float consumemoney=0;
String s="";
try{
InputStreamReader br=new InputStreamReader(System.in);
          BufferedReader is=new BufferedReader(br);
    L3:
    while(true)
{
      System.out.println("请输入你消费金额:");
     try
     {
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
    s=is.readLine();
    consumemoney=Float.parseFloat(s);
     }catch(NumberFormatException e)
               {
        System.out.println("输入的不是数字,请重新输入。");
        continue L3;
     };
break;
}
}catch(Exception e)
{
System.out.println(e);
}
if(consumemoney>leftmoney)
  System.out.println("卡中余额不足!");
else
{
leftmoney-=consumemoney;
System.out.println("你消费了"+s+"元.");
}    }
     float showleftmoney()
     {
 return leftmoney;
}
    void searchrecord()
    {
    }
  void testsignup()
  {
      }
    void borrowbooks()
    {
int number;
String name;
System.out.println("请输入书的名字:");
try
     {
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
name=in.readLine();
     }catch(IOException e){};
System.out.println("请输入书的条码号:");
   }
}
运行界面:
校园卡信息管理系统
===================
1.修改密码
2.消费
3.查询消费明细
4.余额查询
5.等级考试报名
6.图书借阅
7.退出
===================
请选择你的操作:
1
请输入卡的当前密码:
密码不能是非数字!请重试!
请输入卡的当前密码:
问题就在这里,我刚刚输入1就显示了错误信息(密码我还没有输呢)
为什么啊
郁闷中

解决方案 »

  1.   

    c=(char)System.in.read();读如一个字符(以整数表示),键盘上的“1”,对应的 int 是 49(0x21)
    unicode 的 0x7f以下的与ascii一致。
      

  2.   

    s1 = in.readLine();读取了上一句c = (char) System.in.read();的回车换行符
      

  3.   

    to superslash(回答问题要有深度,提问要有难度):
    谢谢指点
    刚刚学,没有头绪呵呵
    但是怎么样才能消除回车的影响呢?
      

  4.   

    int menu() {
            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("6.图书借阅");
            System.out.println("7.退出");
            System.out.println("===================");
            System.out.println("请选择你的操作:");
            String c = "";
            try {
                BufferedReader in = new BufferedReader(new InputStreamReader(
                        System.in));
                c = in.readLine();
                System.out.println(c);
            } catch (IOException e) {
                System.err.println(e.toString());
            }
            int choice = c.charAt(0) - '0';
            int count = 0;
            while (choice > 7 || choice < 1) {
                count++;
                if (count == 3) {
                    System.out.println("小样,你在捣蛋。");
                    System.exit(0);
                }
                System.out.println("小样,操作错误,请重新选择:");
                try {
                    BufferedReader in = new BufferedReader(new InputStreamReader(
                            System.in));
                    c = in.readLine();
                } catch (IOException e) {
                }            choice = c.charAt(0) - '0';
            }
            return choice;
        }
    呵呵,没怎么动:)
      

  5.   

    太谢谢superslash(回答问题要有深度,提问要有难度)