java 点菜_java实现简易点菜器

本文实例为大家分享了java实现点菜器的具体代码,供大家参考,具体内容如下

使用swing工具集 完成,花费两天的时间,没有难点使用的都是基本知识

e98fec6bdaf6df6c63ca93b1cd98c1dc.png

输入桌号后,如果该桌没有人即可进行点菜

d5e71a9ca8b9710c71b7aa372c2272b4.png

e0976b220b9a96e9eca0999d7aa01652.png

c0ac3ba7fb294edfd67e37fa8743c257.png

以下就总结下完成过程中遇到的问题

空指针异常

刚开始输入桌号点击确认好,一直出现空指针异常的信息,最初以为是没有进行初始化的原因,异常的原因也是指向这个,但是弄了半天发现一直弄不好,就很奇怪了,最后才发现原来错误出在if 和 else if的使用上。

5d494932c8e49d9f4f7014cc73777088.png

最开始的代码是这样多个if 加上else,因为else 是匹配最近的if,所以多个if的时候,第一个if执行了else也会执行,这样就导致了我在按下确认按钮时,else里的 new OrderDishes(mealMenus,menusName,file).setVisible(true);也跟着执行了,但此时的mealMenus并没有初始化,所以就出现了空指针异常

if(e.getSource()==querenButton){

if(idText.getText().length()!=0){

//代码省略

}

if(e.getSource()==showButton){

//代码省略

}

if(e.getSource()==stopOrderingButton){

}else{

String menusName=null;

if(e.getSource()==meatButton){

//代码省略

}

if(e.getSource()==vegetarianButton){

//代码省略

}

if(e.getSource()==stapleFoodButton){

//代码省略

}

if(e.getSource()==soupAndPorridgeButton){

//代码省略

}

new OrderDishes(mealMenus,menusName,file).setVisible(true);//按下确认按钮后,new就执行了,但此时mealMenus还没初始化

}

把多个if改为if,else if就可解决问题,当if执行时else if不在执行,(没想到学了一年的java还会犯这种错误,失败呀);

if(e.getSource()==querenButton){

if(idText.getText().length()!=0){

//代码省略

}

else if(e.getSource()==showButton){

//代码省略

}

else if(e.getSource()==stopOrderingButton){

}else{

String menusName=null;

if(e.getSource()==meatButton){

//代码省略

}

else if(e.getSource()==vegetarianButton){

//代码省略

}

else if(e.getSource()==stapleFoodButton){

//代码省略

}

else if(e.getSource()==soupAndPorridgeButton){

//代码省略

}

new OrderDishes(mealMenus,menusName,file).setVisible(true);

}

Randomaccessfile

本程序使用randomaccessfile来对菜单进行写入文件和读出文件,让我进一步的认识到randomaccessfile的作用,randomaccessfile是I/O里功能最丰富的文件访问类,通过seek()方法可访问文件的任意,提供了众多方法来访问文件内容,本程序使用seek()每次都把文件指针放在最后面以便记录菜单,但使用readDouble把价格写进文件时价格就会出现乱码

//读出文件

try {

RandomAccessFile in=new RandomAccessFile(file,"r");

String mealName=null;

while((mealName=in.readUTF())!=null){

showArea.append("\n"+mealName);

String mealPrice=in.readUTF();

showArea.append(" "+mealPrice);

totalPrice=totalPrice+Double.parseDouble(mealPrice);

}

//写入文件

try {

RandomAccessFile out=new RandomAccessFile(file,"rw");

if(file.exists()){

long length=file.length();

out.seek(length);

}

for (int i=0;i

out.writeUTF(orderDishes.get(i).getName());

String str=String.valueOf(orderDishes.get(i).getPrice());

System.out.println(str);

out.writeUTF(str);

}

42cc0c699055123e0cbe5cf5fa3639e9.png

然后我就把价格转换为String再写入文件,计算总价时再转换为Double,这会价格能够正确写入文件了,但还是有一些符号乱码,试过好的方法都不能解决这些符号乱码,等以后技术更好了再来解决

517798978543cc6b21e42b899db33659.png

Box很好用

本程序使用HashSet来记录桌号,以此来判断是否有人,不太完善,之后会使用数据库进行改进完善

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值