java实现简易点菜器
本文实例为大家分享了java实现点菜器的具体代码,供大家参考,具体内容如下
使用swing工具集完成,花费两天的时间,没有难点使用的都是基本知识
输入桌号后,如果该桌没有人即可进行点菜
以下就总结下完成过程中遇到的问题
空指针异常
刚开始输入桌号点击确认好,一直出现空指针异常的信息,最初以为是没有进行初始化的原因,异常的原因也是指向这个,但是弄了半天发现一直弄不好,就很奇怪了,最后才发现原来错误出在if和elseif的使用上。
最开始的代码是这样多个if加上else,因为else是匹配最近的if,所以多个if的时候,第一个if执行了else也会执行,这样就导致了我在按下确认按钮时,else里的 newOrderDishes(mealMenus,menusName,file).setVisible(true);也跟着执行了,但此时的mealMenus并没有初始化,所以就出现了空指针异常
if(e.getSource()==querenButton){
if(idText.getText().length()!=0){
//代码省略
}
if(e.getSource()==showButton){
//代码省略
}
if(e.getSource()==stopOrderingButton){
}else{
StringmenusName=null;
if(e.getSource()==meatButton){
//代码省略
}
if(e.getSource()==vegetarianButton){
//代码省略
}
if(e.getSource()==stapleFoodButton){
//代码省略
}
if(e.getSource()==soupAndPorridgeButton){
//代码省略
}
newOrderDishes(mealMenus,menusName,file).setVisible(true);//按下确认按钮后,new就执行了,但此时mealMenus还没初始化
}
把多个if改为if,elseif就可解决问题,当if执行时elseif不在执行,(没想到学了一年的java还会犯这种错误,失败呀);
if(e.getSource()==querenButton){
if(idText.getText().length()!=0){
//代码省略
}
elseif(e.getSource()==showButton){
//代码省略
}
elseif(e.getSource()==stopOrderingButton){
}else{
StringmenusName=null;
if(e.getSource()==meatButton){
//代码省略
}
elseif(e.getSource()==vegetarianButton){
//代码省略
}
elseif(e.getSource()==stapleFoodButton){
//代码省略
}
elseif(e.getSource()==soupAndPorridgeButton){
//代码省略
}
newOrderDishes(mealMenus,menusName,file).setVisible(true);
}
Randomaccessfile
本程序使用randomaccessfile来对菜单进行写入文件和读出文件,让我进一步的认识到randomaccessfile的作用,randomaccessfile是I/O里功能最丰富的文件访问类,通过seek()方法可访问文件的任意,提供了众多方法来访问文件内容,本程序使用seek()每次都把文件指针放在最后面以便记录菜单,但使用readDouble把价格写进文件时价格就会出现乱码
//读出文件
try{
RandomAccessFilein=newRandomAccessFile(file,"r");
StringmealName=null;
while((mealName=in.readUTF())!=null){
showArea.append("\n"+mealName);
StringmealPrice=in.readUTF();
showArea.append(""+mealPrice);
totalPrice=totalPrice+Double.parseDouble(mealPrice);
}
//写入文件
try{
RandomAccessFileout=newRandomAccessFile(file,"rw");
if(file.exists()){
longlength=file.length();
out.seek(length);
}
for(inti=0;i
然后我就把价格转换为String再写入文件,计算总价时再转换为Double,这会价格能够正确写入文件了,但还是有一些符号乱码,试过好的方法都不能解决这些符号乱码,等以后技术更好了再来解决
Box很好用
本程序使用HashSet来记录桌号,以此来判断是否有人,不太完善,之后会使用数据库进行改进完善
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。