求各位大神帮我这个新手看看,为什么我调用食品查询(spcx)这个方法输出的都是没有该商品呢

BIGKKKK 2016-04-13 06:45:38
import java.util.*;
import java.io.*;
public class Food{
public static void main(String[] args)throws Exception
{
Spgl food=new Spgl();
BufferedReader sr=new BufferedReader(new InputStreamReader(System.in));
//Scanner sr=new Scanner(System.in);
while(true){
System.out.println("请按以下提示选择功能");
System.out.println("添加食品请按1");
System.out.println("查找食品信息请按2");
System.out.println("修改食品价格请按3");
System.out.println("删除食品请按4");
System.out.println("退出系统请按0");
String str=sr.readLine();
//String str=sr.next();
if(str.equals("1"))
{
System.out.println("请输入食品编号");
String bh=sr.readLine();
System.out.println("请输入食品名称");
String mc=sr.readLine();
System.out.println("请输入食品价格");
float jg=Float.parseFloat(sr.readLine());
//float jg=sr.nextFloat();
shipin b=new shipin(bh,mc,jg);
food.add(b);

}
else if(str.equals("2"))
{
System.out.println("请输入食品编号");
//String bh=sr.readLine();
String bh=sr.readLine();
food.spcx(bh);
}
}

}
}
class shipin {
private String name;
private String number;
private float price;
shipin(String name,String number,float price){
this.name=name;
this.number=number;
this.price=price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}

}
class Spgl {
private ArrayList a= null;
Spgl(){
a=new ArrayList();
}
public void add(shipin shipin){
a.add(shipin);
System.out.println("添加食品成功");
}
public void spcx(String number){
int i;
for(i=0;i<a.size();i++)
{
shipin sp=(shipin)a.get(i);
if(sp.getNumber().equals(number))
{
System.out.println("该食品的信息为:");
System.out.println("食品编号:"+number);
System.out.println("食品名称:"+sp.getName());
System.out.println("食品价格:"+sp.getPrice());
break;
}
}
if(i==a.size()){
System.out.println("无此食品");
}
}

void spxg(String number){
int i;
for(i=0;i<a.size();i++){
shipin sp=(shipin)a.get(i);
if(sp.getNumber().equals(number))
{
a.add(i);
break;
}
}
if(i==a.size()){
System.out.println("请输入正确的编号");
}
}

}
...全文
78 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
BIGKKKK 2016-04-13
  • 打赏
  • 举报
回复
引用 8楼Hero-张 的回复:
System.out.println("请输入食品编号"); String bh=sr.readLine(); shipin b=new shipin(bh,mc,jg); shipin(String name,String number,float price){ this.name=name; this.number=number; this.price=price; } bh对应了name,他是第一个参数
嗷,多谢大神指点
Hero-张 2016-04-13
  • 打赏
  • 举报
回复
引用 4 楼 u012816529 的回复:
引用 3 楼 qq_28524515 的回复:
[quote=引用 2楼Hero-张 的回复:]你在for循环之后,i肯定会跟size一样的,你在for循环里面设一个标志就可以了
怎么设置?能指导下吗
就在for循环之前,设置一个Boolean变量,如果循环时有检测到商品,设为true就可以了[/quote] 。。失误,没看到,不过我注意到,你把你的编号设置到了name属性里面去了。
Hero-张 2016-04-13
  • 打赏
  • 举报
回复
System.out.println("请输入食品编号"); String bh=sr.readLine(); shipin b=new shipin(bh,mc,jg); shipin(String name,String number,float price){ this.name=name; this.number=number; this.price=price; } bh对应了name,他是第一个参数
BIGKKKK 2016-04-13
  • 打赏
  • 举报
回复
引用 6楼Hero-张 的回复:
引用 4 楼 u012816529 的回复:
[quote=引用 3 楼 qq_28524515 的回复:] [quote=引用 2楼Hero-张 的回复:]你在for循环之后,i肯定会跟size一样的,你在for循环里面设一个标志就可以了
怎么设置?能指导下吗
就在for循环之前,设置一个Boolean变量,如果循环时有检测到商品,设为true就可以了[/quote] 。。失误,没看到,不过我注意到,你把你的编号设置到了name属性里面去了。[/quote]并没有吧
BIGKKKK 2016-04-13
  • 打赏
  • 举报
回复
引用 2楼Hero-张 的回复:
你在for循环之后,i肯定会跟size一样的,你在for循环里面设一个标志就可以了
不对啊,如果有匹配的编号,for循环没到最后就跳出了呀,这时候i并不等于size啊
Hero-张 2016-04-13
  • 打赏
  • 举报
回复
引用 3 楼 qq_28524515 的回复:
引用 2楼Hero-张 的回复:
你在for循环之后,i肯定会跟size一样的,你在for循环里面设一个标志就可以了
怎么设置?能指导下吗
就在for循环之前,设置一个Boolean变量,如果循环时有检测到商品,设为true就可以了
Hero-张 2016-04-13
  • 打赏
  • 举报
回复
你在for循环之后,i肯定会跟size一样的,你在for循环里面设一个标志就可以了
BIGKKKK 2016-04-13
  • 打赏
  • 举报
回复
求不沉啊
BIGKKKK 2016-04-13
  • 打赏
  • 举报
回复
引用 2楼Hero-张 的回复:
你在for循环之后,i肯定会跟size一样的,你在for循环里面设一个标志就可以了
怎么设置?能指导下吗

23,407

社区成员

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

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