package cn.qn.demo17;public class Shop {
private int id;//编号
private double prize;//单价
private String name;//商品名字
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public double getPrize() {
return prize;
}
public void setPrize(double prize) {
this.prize = prize;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Shop() {}

public Shop(int id,  String name,double prize) {//Shop的构造方法 
super();
this.id=id;
this.name=name;
this.prize=prize;
}
}package cn.qn.demo17;import java.util.Arrays;public class List extends Shop implements Method {
static Shop[] arr = new Shop[3];// 创建数据类型是Shop的数组arr
static int count = 3;// 数组长度为count 此时商品数为3所以count 初始值为3 public void init() {// 初始化数组
arr[0] = new Shop(9001, "少林寺酥饼核桃", 120.0);// 给数组里放上原有的元素
arr[1] = new Shop(9002, "尚康杂粮牡丹饼", 20.0);
arr[2] = new Shop(9003, "新疆原产哈密瓜", 7.0);
} public void addShop(Shop a) {// 往shop这个数组里添加元素的方法
if (arr.length == count) {
arr = Arrays.copyOf(arr, arr.length + 1);
}
arr[count] = a;
count++;
} public void sunShop(Shop a) { // 删除 shop这个数组里的元素
if (arr.length == count) {
int index = 0;
for (int i = 0; i < count; i++) {
if (a.getId() == arr[i].getId()) {// 通过a的id号 找到数组里的相应元素
index = i;// 删除
}
}
for (int i = index; i < arr.length - 1; i++) {
arr[i] = arr[i + 1];
}
arr[arr.length - 1] = null;
count--;
}
} public Shop mendShop(Shop a) {// 找到这个要修改的元素
for (int i = 0; i < count; i++) {
if (a.getId() == arr[i].getId()) {
}
}
return a;
}
}package cn.qn.demo17;import java.util.Scanner;public class Test extends List {
public static void main(String[] args) {
List a = new List();
Scanner sc = new Scanner(System.in);
System.out.println("===============欢迎光临itcast超市===============");
xh: while (true) {
System.out.println("1:货物清单 2:添加新物品 3:删除物品 4:修改物品" + "\n" + "5:退出系统" + "\n" + "请您输入要操作的功能序号");
System.out.println("\n" + "-----------------------------------------------");
switch (new Scanner(System.in).nextInt()) {
case 1:
System.out.println("输入1:货物清单" + "\n" + "============商品库存清单============");
System.out.println("商品编号" + "\t" + "商品名称" + "\t" + "\t" + "商品单价");
a.init();
for (int i = 0; i < count; i++) {
System.out.println(arr[i].getId() + "\t" + arr[i].getName() + "\t" + arr[i].getPrize());
}
System.out.println();
break;
case 2:
System.out.println("输入2:添加新货物");
System.out.print("请输入新水果的名称:");
a.setName(sc.next());
System.out.print("请输入新水果编号:");
a.setId(sc.nextInt());
System.out.print("请输入新水果价格:");
a.setPrize(sc.nextDouble());
a.addShop(a);
System.out.println();
// System.out.println(a.getId());
// a.init();
// for (int i = 0; i < count; i++) {
// System.out.println(arr[i].getId()+"\t"+arr[i].getName()+"\t"+arr[i].getPrize());
// }
break;
case 3:
System.out.println("输入3:删除货物");
System.out.print("请输入您要删除的水果编号:");
a.setId(sc.nextInt());
a.init();
a.sunShop(a);
System.out.println("水果信息删除完毕!");
System.out.println();
// System.out.println(a.getId());
// a.init();
// for (int i = 0; i < count; i++) {
// System.out.println(arr[i].getId()+"\t"+arr[i].getName()+"\t"+arr[i].getPrize());
// }
break;
case 4:
System.out.println("输入4:修改货物");//实际上只想到了找到这个对象没想到怎么改 索性直接删除再加上新的
System.out.println("请输入您要修改的货物的编号:");
a.setId(sc.nextInt());
a.init();
a.sunShop(a);
System.out.println("请输入新的水果ID:");
a.setId(sc.nextInt());
System.out.print("请输入新的水果名称:");
a.setName(sc.next());
System.out.print("请输入新的水果单价:");
a.setPrize(sc.nextDouble());
System.out.println("水果信息更新完毕!");
a.addShop(a);
System.out.println();
// for (int i = 0; i < count; i++) {
// System.out.println(arr[i].getId()+"\t"+arr[i].getName()+"\t"+arr[i].getPrize());
// }
break;
case 5:
System.out.println("输入5:退出系统");
break xh;
}
}
}
}自学了差不多两个星期多点了  把面向对象学完了 感觉这部分挺重要的也就先没往后学 今天吭哧瘪肚写写改改的做了俩多小时 最后还是这样漏洞百出 这道题在网上找到的答案全部都是用集合来做的 然而我还没开始学集合 只能用数组来做 首先问题就是 
①增加物品 只能第一次增加有效  再增加上次增加的内容就和这次增加的一样了
②删除物品 只能删除第一次 再往后删除就不好用了..而且经常乱七八糟
③修改物品 这个我自己都有点搞不懂了..求大佬解救!!

解决方案 »

  1.   

    public void removeStudent(int id){
    int index = -1;
    for(int i = 0; i < count; i++){
    if(ss[i].id == id){
    index = i;
    break;
    }
    }
    if(index == -1){
    return;
    }
    System.arraycopy(ss,index+1,ss,index,count-index-1);
    count--;
    }
    我大概知道问题出在哪里了  我发现一个类似的代码 请问System.arraycopy(ss,index+1,ss,index,count-index-1); 这一行 还有为什么要让index=-1 还有if里面return的是什么 ?