问题描述
- JAVA写着写着就懵了,数组怎么删除里面的元素呢
-
不能删除或者说赋值为null ,我该添加点什么代码进去才能实现呢,还要朝前移动一位怎么解决
我感觉我自己基础不行了,求大神指明一个学习方向import java.util.*;
import javax.swing.text.StyledEditorKit.ForegroundAction;
public class dvdMgr
{
Scanner input=new Scanner(System.in);
DVD[] dvd=new DVD[50];public void sta()
{
dvd[0]=new DVD();
dvd[0].name="小马哥的春天";
dvd[0].state=0;dvd[1]=new DVD(); dvd[1].name="鬼妈妈"; dvd[1].state=0; dvd[2]=new DVD(); dvd[2].name="拉斯维加斯3"; dvd[2].state=0; } public void add() { System.out.println("请输入要添加的DVD"); String name=input.next(); for (int i = 0;i<dvd.length ; i++) { if(dvd[i]==null) { dvd[i]=new DVD(); dvd[i].name=name; System.out.println("添加成功!"); break; } else if(i==dvd.length-1) { System.out.println("添加失败,列表已满"); } } } /** * */ public void export() { for (int i = 0; i < dvd.length; i++) { if(dvd[i]!=null) { System.out.println("序号t状态t名称t借出日期n"); System.out.println((i)+"t"+(dvd[i].state==0?"可借t":"已借出t")+dvd[i].name+"t"+dvd[i].date); } } } public boolean delete() { boolean index=false; int ret=-1; System.out.println("请输入要删除的DVD:"); String name=input.next(); for (int i = 0; i < dvd.length; i++) { if(dvd[i].name.equals(name)) { ret=i; index=true; System.out.println("删除成功DVD!"); break; } else { System.out.println("没有找到要删除的DVD"); } } return index; }
}
解决方案
如果你嫌麻烦的话,可以这样做哦!!
先把数据转化为List,然后使用List的remove方法进行删除,最后再使用list的toArray方法,转化为数组。。。
如果不嫌麻烦的话,那就去复习下数据结构中的线性表。
删除数据a[]中的一个元素,比如说i
1.判断i是否越界
2.然后将a[i]置空
3.循环:
for(int j=i;i<a.length;i++){
让a[j]和a[j+1]调换位置
}
然后,就OK了!
建议学数据结构的时候,可以去看看Java里面对那几个常用的数据结构的实现,一来可以看看大神的代码是怎么写的,二来对于深刻了解数据结构很有帮助!
解决方案二:
可以用repalce替换掉,用空来替换
时间: 2024-08-24 20:08:51