哪位高手能帮我解决一下,这个问题,急死我了

jay0518 2005-10-18 07:21:58
由于刚刚学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就显示了错误信息(密码我还没有输呢)
为什么啊
郁闷中
...全文
98 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jay0518 2005-10-18
  • 打赏
  • 举报
回复
太谢谢superslash(回答问题要有深度,提问要有难度)
Octer 2005-10-18
  • 打赏
  • 举报
回复
楼上这位兄台,你太搞笑了吧,呵呵
superslash 2005-10-18
  • 打赏
  • 举报
回复
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;
}
呵呵,没怎么动:)
jay0518 2005-10-18
  • 打赏
  • 举报
回复
to superslash(回答问题要有深度,提问要有难度):
谢谢指点
刚刚学,没有头绪呵呵
但是怎么样才能消除回车的影响呢?
superslash 2005-10-18
  • 打赏
  • 举报
回复
总体感觉楼主在读取密码时从代码看思维比较乱,呵呵,个人意见:)
superslash 2005-10-18
  • 打赏
  • 举报
回复
s1 = in.readLine();读取了上一句c = (char) System.in.read();的回车换行符
trumplet 2005-10-18
  • 打赏
  • 举报
回复
c=(char)System.in.read();

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

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧