当前位置:编程学习 > JAVA >>

方法出错 新手 求大神

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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,