黑马程序员技术交流社区

标题: 做的一个食品管理小程序,为何BUG如此之多?求分析 [打印本页]

作者: 来自沙沙的我    时间: 2014-6-3 16:36
标题: 做的一个食品管理小程序,为何BUG如此之多?求分析
本帖最后由 来自沙沙的我 于 2014-6-4 23:50 编辑
  1. import java.util.*;
  2. import java.io.*;
  3. class sp{
  4.         private String biaohao;
  5.         private String name;
  6.         private float jiage;
  7.         sp(String biaohao,String name,float jiage){
  8.                 this.biaohao=biaohao;
  9.                 this.name=name;
  10.                 this.jiage=jiage;
  11.         }
  12.         public String getbiaohao(){
  13.                 return biaohao;
  14.         }
  15.         public void setbiaohao(String biaohao){
  16.                 this.biaohao=biaohao;
  17.         }
  18.         public String getname(){
  19.                 return biaohao;
  20.         }
  21.         public void setname(String name){
  22.                 this.name=name;
  23.         }
  24.         public float getjiage(){
  25.                 return jiage;
  26.         }
  27.         public void setjiage(float jiage){
  28.                 this.jiage=jiage;
  29.         }
  30. }
  31. class spgl{
  32.         private ArrayList aa=null;
  33.         spgl(){
  34.                 aa=new ArrayList();
  35.         }
  36.         public void addsp(sp pp){
  37.                 aa.add(pp);
  38.                 System.out.println("添加新食品成功啦");
  39.         }
  40.         public void spxx(String biaohao){
  41.                 int i;
  42.                 for(i=0;i<aa.size();i++){
  43.                         sp pp=(sp)aa.get(i);
  44.                         if(pp.getbiaohao().equals(biaohao)){
  45.                                 System.out.println("该食品编号为"+pp.getbiaohao());
  46.                                 System.out.println("该食品名称为"+pp.getname());
  47.                                 System.out.println("该食品价格为"+pp.getjiage());
  48.                         
  49.                                 break;
  50.                         }
  51.                
  52.                 }
  53.                 if(i==aa.size()){
  54.                                 System.out.println("输入食品信息有误");
  55.                 }
  56.         }
  57.         
  58.         public void spjg(String biaohao){
  59.                 int j;
  60.                 for(j=0;j<aa.size();j++){
  61.                         sp pp=(sp)aa.get(j);
  62.                         if(pp.getbiaohao().equals(biaohao)){
  63.                                 System.out.println("当前食品价格为"+pp.getjiage()+"请输入修改价格");
  64.                                 Scanner in=new Scanner(System.in);
  65.                                 int b=in.nextInt();
  66.                                 pp.setjiage(b);
  67.                                 break;
  68.                         }
  69.                 }
  70.                 if(j==aa.size()){
  71.                                 System.out.println("输入食品信息有误");
  72.                 }
  73.         }
  74.         public void spsc(String biaohao){
  75.                 int i;
  76.                 for(i=0;i<aa.size();i++){
  77.                         sp ss=(sp)aa.get(i);
  78.                         if(ss.getbiaohao().equals(biaohao)){
  79.                                 aa.remove(i);
  80.                                 System.out.println("食品已经删除");
  81.                                 break;
  82.                         }                        
  83.                 }
  84.                 if(i==aa.size()){
  85.                         System.out.println("食品不存在请重新输入");
  86.                 }
  87.         }
  88. }

  89. public class ship
  90. {
  91.         public static void main(String[] args) throws Exception
  92.         {
  93.                 int x;
  94.                 spgl ab=new spgl();
  95.                 BufferedReader sr=new BufferedReader(new InputStreamReader(System.in));

  96.                     
  97.                         do{
  98.                                 System.out.println("添加食品信息请按1\n查找食品信息请按2\n修改食品价格请按3\n删除食品请按4\n退出请按0");
  99.                                  String s=sr.readLine();
  100.                                 x=Integer.parseInt(s);
  101.                                 if(x==1){
  102.                                         System.out.println("请输入物品编号");
  103.                                 
  104.                                        
  105.                                         String biaohao=sr.readLine();
  106.                                        
  107.                                         System.out.println("请输入物品名称");
  108.                                         String name=sr.readLine();
  109.                                         System.out.println("请输入物品价格");
  110.                                         float jiage=sr.read();
  111.                                         sp a=new sp(biaohao,name,jiage);
  112.                                        
  113.                                         ab.addsp(a);
  114.                                         continue;
  115.                                 }
  116.                                 if(x==2){
  117.                                         System.out.println("请输入查询物品的编号");
  118.                                         String bb=sr.readLine();
  119.                                         ab.spxx(bb);
  120.                                 }
  121.                                 if(x==3)
  122.                                 {
  123.                                         System.out.println("请输入修改物品的编号");
  124.                                         String bb=sr.readLine();
  125.                                        
  126.                                         ab.spjg(bb);
  127.                                 }
  128.                                 if(x==4)
  129.                                 {
  130.                                         System.out.println("请输入想要删除的食品编号");
  131.                                         String bb=sr.readLine();
  132.                                         ab.spsc(bb);
  133.                                        
  134.                                 }
  135.                                 
  136.                                 
  137.                                 
  138.                         }while(x!=0);
  139.                                         System.out.println("谢谢使用");
  140.                                         sr.close();
  141.                                        
  142.                         
  143.                
  144.                         
  145.                         
  146.                
  147.                
  148.                
  149.                
  150.         }
  151. }
复制代码

作者: 王亚亚    时间: 2014-6-3 18:14
本帖最后由 王亚亚 于 2014-6-3 18:16 编辑
  1. public class Sp {
  2.          private String biaohao;
  3.      private String name;
  4.      private float jiage;
  5.      Sp(String biaohao,String name,float jiage){
  6.              this.biaohao=biaohao;
  7.              this.name=name;
  8.              this.jiage=jiage;
  9.      }
  10.      public String getbiaohao(){
  11.              return biaohao;
  12.      }
  13.      public void setbiaohao(String biaohao){
  14.              this.biaohao=biaohao;
  15.      }
  16.      public String getname(){
  17.              return biaohao;
  18.      }
  19.      public void setname(String name){
  20.              this.name=name;
  21.      }
  22.      public float getjiage(){
  23.              return jiage;
  24.      }
  25.      public void setjiage(float jiage){
  26.              this.jiage=jiage;
  27.      }
  28.         @Override
  29.         public int hashCode() {
  30.                 final int prime = 31;
  31.                 int result = 1;
  32.                 result = prime * result + ((biaohao == null) ? 0 : biaohao.hashCode());
  33.                 result = prime * result + Float.floatToIntBits(jiage);
  34.                 result = prime * result + ((name == null) ? 0 : name.hashCode());
  35.                 return result;
  36.         }
  37.         @Override
  38.         public boolean equals(Object obj) {
  39.                 if (this == obj)
  40.                         return true;
  41.                 if (obj == null)
  42.                         return false;
  43.                 if (getClass() != obj.getClass())
  44.                         return false;
  45.                 Sp other = (Sp) obj;
  46.                 if (biaohao == null) {
  47.                         if (other.biaohao != null)
  48.                                 return false;
  49.                 } else if (!biaohao.equals(other.biaohao))
  50.                         return false;
  51.                 if (Float.floatToIntBits(jiage) != Float.floatToIntBits(other.jiage))
  52.                         return false;
  53.                 if (name == null) {
  54.                         if (other.name != null)
  55.                                 return false;
  56.                 } else if (!name.equals(other.name))
  57.                         return false;
  58.                 return true;
  59.         }

  60. }
  61. [code]public class Spgl {
  62.         private ArrayList aa = null;

  63.         Spgl() {
  64.                 aa = new ArrayList();
  65.         }

  66.         public void addsp(Sp pp) {
  67.                 aa.add(pp);
  68.                 System.out.println("添加新食品成功啦");
  69.         }

  70.         public void spxx(String biaohao) {
  71.                 int i;
  72.                 for (i = 0; i < aa.size(); i++) {
  73.                         Sp pp = (Sp) aa.get(i);
  74.                         if (pp.getbiaohao().equals(biaohao)) {
  75.                                 System.out.println("该食品编号为" + pp.getbiaohao());
  76.                                 System.out.println("该食品名称为" + pp.getname());
  77.                                 System.out.println("该食品价格为" + pp.getjiage());
  78.                                 break;
  79.                         }
  80.                         
  81.                 }
  82.                 if (i == aa.size()) {
  83.                                 System.out.println("输入食品信息有误");
  84.                         }
  85.         }

  86.         public void spjg(String biaohao) {
  87.                 int j;
  88.                 for (j = 0; j < aa.size(); j++) {
  89.                         Sp pp = (Sp) aa.get(j);
  90.                         if (pp.getbiaohao().equals(biaohao)) {
  91.                                 System.out.println("当前食品价格为" + pp.getjiage() + "请输入修改价格");
  92.                                 Scanner in = new Scanner(System.in);
  93.                                 float b = in.nextFloat();
  94.                                 pp.setjiage(b);
  95.                                 System.out.println("修改成功");
  96.                                 break;
  97.                         }
  98.                         
  99.                 }
  100.                 if (j == aa.size()) {
  101.                                 System.out.println("输入食品信息有误");
  102.                         }
  103.         }

  104.         public void spsc(String biaohao) {
  105.                 int i;
  106.                 for (i = 0; i < aa.size(); i++) {
  107.                         Sp ss = (Sp) aa.get(i);
  108.                         if (ss.getbiaohao().equals(biaohao)) {
  109.                                 aa.remove(i);
  110.                                 System.out.println("食品已经删除");
  111.                                 break;
  112.                         }
  113.                         
  114.                 }
  115.                 if (i == aa.size()) {
  116.                                 System.out.println("食品不存在请重新输入");
  117.                         }
  118.         }

  119. }
  120. [code]public class Ship {
  121.         public static void main(String[] args) throws Exception {
  122.                 int x;
  123.                 Spgl ab = new Spgl();
  124.                 BufferedReader sr = new BufferedReader(new InputStreamReader(System.in));

  125.                 do {
  126.                         System.out.println("添加食品信息请按1\n查找食品信息请按2\n修改食品价格请按3\n删除食品请按4\n退出请按0\n");
  127.                         String s = sr.readLine();
  128.                         x = Integer.parseInt(s);
  129.                         if (x == 1) {
  130.                                 System.out.println("请输入物品编号");

  131.                                 String biaohao = sr.readLine();

  132.                                 System.out.println("请输入物品名称");
  133.                                 String name = sr.readLine();
  134.                                 System.out.println("请输入物品价格");
  135.                                 String s2 = sr.readLine();
  136.                                 float jiage =Float.parseFloat(s2);//这里修改了。
  137.                                 Sp a = new Sp(biaohao, name, jiage);
  138.                                 ab.addsp(a);
  139.                                 //continue;
  140.                         }
  141.                         if (x == 2) {
  142.                                 System.out.println("请输入查询物品的编号");
  143.                                 String bb = sr.readLine();
  144.                                 ab.spxx(bb);
  145.                         }
  146.                         if (x == 3) {
  147.                                 System.out.println("请输入修改物品的编号");
  148.                                 String bb = sr.readLine();
  149.                                 ab.spjg(bb);
  150.                         }
  151.                         if (x == 4) {
  152.                                 System.out.println("请输入想要删除的食品编号");
  153.                                 String bb = sr.readLine();
  154.                                 ab.spsc(bb);

  155.                         }

  156.                 } while (x != 0);
  157.                 System.out.println("谢谢使用");
  158.                 sr.close();

  159.         }

  160. }
复制代码
[/code][/code]修改的地方我注释了,楼主可以看一下,建议楼主以后写代码加上注释,养成良好的习惯。
作者: 来自沙沙的我    时间: 2014-6-3 22:24
王亚亚 发表于 2014-6-3 18:14
[/code][/code]修改的地方我注释了,楼主可以看一下,建议楼主以后写代码加上注释,养成良好的习惯。 ...

float jiage =Float.parseFloat(s2);//这里修改了。
原来是这个地方啊,谢谢了。
下次我会记得写注释的,一下看去确实很眼花。

另外能不能再问问,为什么显示食品信息里面,为什么无法显示食品名称?
作者: 王亚亚    时间: 2014-6-3 23:16
来自沙沙的我 发表于 2014-6-3 22:24
float jiage =Float.parseFloat(s2);//这里修改了。
原来是这个地方啊,谢谢了。
下次我会记得写注释的, ...

楼主请看你的Sp类中的getName()方法中的代码你是这样写的 public String getname(){
             return biaohao;//这里应该是返回的是name吧
     }
作者: 来自沙沙的我    时间: 2014-6-4 23:49
王亚亚 发表于 2014-6-3 23:16
楼主请看你的Sp类中的getName()方法中的代码你是这样写的 public String getname(){
             retur ...

呵呵,汗一个!

我太粗心啦。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2