java实现简易点菜器

 更新时间:2019年12月10日 13:27:37   作者:林北林北  
这篇文章主要为大家详细介绍了java实现简易点菜器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

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

 

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

空指针异常 

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

最开始的代码是这样多个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<orderDishes.size();i++){
  out.writeUTF(orderDishes.get(i).getName());
  String str=String.valueOf(orderDishes.get(i).getPrice());
  System.out.println(str);
  out.writeUTF(str);
 }

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

 

Box很好用 

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

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

相关文章

  • java中i = i++和i =++i的深入讲解

    java中i = i++和i =++i的深入讲解

    这篇文章主要介绍了java中i = i++和i =++i的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • spring boot实现过滤器和拦截器demo

    spring boot实现过滤器和拦截器demo

    本篇文章主要介绍了spring boot实现过滤器和拦截器demo ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Java毕业设计实战之教室预订管理系统的实现

    Java毕业设计实战之教室预订管理系统的实现

    这是一个使用了java+SpringBoot+Maven+Vue+mysql开发的教室预订管理系统,是一个毕业设计的实战练习,具有教室预订管理该有的所有功能,感兴趣的朋友快来看看吧
    2022-02-02
  • Windows系统下Java连接SQL Server的方法简介

    Windows系统下Java连接SQL Server的方法简介

    这篇文章主要介绍了Windows系统下Java连接SQL Server的方法,分别是JDBC和JTDS的相关使用,需要的朋友可以参考下
    2015-09-09
  • java实现文件上传下载功能

    java实现文件上传下载功能

    这篇文章主要介绍了java实现文件上传下载功能,上传单个或多个文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Eclipse安装配置方法图文教程

    Eclipse安装配置方法图文教程

    这篇文章主要为大家详细介绍了Eclipse安装配置方法图文教程,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • SpringBoot项目中如何访问HTML页面

    SpringBoot项目中如何访问HTML页面

    这篇文章主要介绍了SpringBoot项目中如何访问HTML页面,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 浅谈一下Java多线程断点复制

    浅谈一下Java多线程断点复制

    这篇文章主要介绍了浅谈一下Java多线程断点复制,当程序执行中断时(出现错误、断电关机),仍可以从上次复制过程中重新开始(不必从头开始复制),需要的朋友可以参考下
    2023-04-04
  • 基于Arrays.sort()和lambda表达式

    基于Arrays.sort()和lambda表达式

    这篇文章主要介绍了Arrays.sort()和lambda表达式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • java8如何根据list对象中的属性过滤筛选

    java8如何根据list对象中的属性过滤筛选

    这篇文章主要介绍了java8如何根据list对象中的属性过滤筛选,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05

最新评论