方法出错 新手 求大神
public void delete() {//找到要删除的元素
//提示用户先输入要删除的元素(DVD名字)
System.err.println("请输入要删除的dvd名称");
String deldvdname=sc.next();
//遍历dvd列表
int index;
for (int i = 0; i <dvdArray.length-1; i++)
{
//判断键盘输入的是否与找到的元素相同
if(dvdArray[i].equals(deldvdname))
{
index=i;
//将找到的元素的后一位依次往前移动一位
dvdArray[index]=dvdArray[index+1];
if(dvdArray[index].getStates()==0){
System.out.println("对不起光碟以借出");
}
else{
//最后一行置空实现删除
dvdArray[dvdArray.length-1]=null;
}
//
}
else{
System.out.println("对不起你输入的名称不存在请重新输入");
}
}
}
主要想实现的功能是用户输入一个光碟名称,程序在数组里面查找到他,然后将后一位前移 最后一位不为空的元素置空 实现删除 。 还有就是光碟以借出的不可删除 光碟不存在的要输出提示 ,,本人新手没学几天 求大神帮忙啊 --------------------编程问答-------------------- 你的dvdArray是String数组?dvdArray[index].getStates()==0 ,String怎么有getStates方法!!如果不是String数组,那么dvdArray[i].equals(deldvdname)比较有意思嘛.. --------------------编程问答-------------------- 是string数组 如果那个不对的话要用哪个方法获得数组元素的状态呢????、我刚学的 不太懂哦 求指教 --------------------编程问答-------------------- 可以把光盘设计成一个类Dvd,封装两个属性,一个是String name,一个是 int state.
并添加一些必要的方法,setName(),getName(),setState(),getState()等。
dvdArray[] 设计成Dvd对象的数组。
--------------------编程问答-------------------- for (int i = 0; i <dvdArray.length-1; i++)
{
1. 你的for循环里第二个条件为什么是i <dvdArray.length-1;,应该是i <dvdArray.length;吧,不然不是没遍历完吗?
2. 当代码执行到了“光碟不存在”或者“光碟已借出”这些情况的时候不应该再继续循环下去了吧,应该用break退出循环。
3. //将找到的元素的后一位依次往前移动一位
dvdArray[index]=dvdArray[index+1];
你说你要把找到元素的后一位依次往前移动一位,可是好像你只移动了一个对象呢。 --------------------编程问答-------------------- 那应该怎么实现每位都前移啊 不会啊 给个例子好不 --------------------编程问答-------------------- public void delete() {
Scanner input = new Scanner(System.in);
System.out.println("请输入DVD名称");
String name = input.next();
boolean flag = false;
for (int i = 0; i < dvds.length; i++) {
if (dvds[i] != null && dvds[i].name.equalsIgnoreCase(name)
&& dvds[i].state == 1) {
int j = i;// 删除的位置i
while (dvds[j + 1] != null) {
dvds[j] = dvds[j + 1];
j++;
}
dvds[j] = null;
System.out.println("删除<<" + name + ">>成功");
flag = true;
break;
} else if (dvds[i] != null && dvds[i].name.equalsIgnoreCase(name)
&& dvds[i].state == 0) {
System.out.println("<<" + name + ">>为借出状态,不可删");
flag = true;
break;
}
}// for结束
if (flag == false) {
System.out.println("没找到<<" + name + ">>!");
}
}
补充:Java , Eclipse