数组的增删改查

直接上例子程序:

1。查询:输出数组中所有有效元素
 for(int i=0;i<name.length;i++){            
  System.out.println(name[i]);
 }

直接用遍历的方法查找出数组中所有的元素

2.添加找到添加的位置(String类型的数组第一次出现null值的下标,
整型数组就是第一次出现0的下标),给这个位置赋值

int index=-1;
for(int i=0;i<name.length;i++){
    if(name[i]==null){
        index=i;
        break;
    }
}
ifindex!=-1){
    name[index]="田七";
}else{
    System.out.print(""此数组已满"");
}

例子分析:index这个变量再整个程序中相当于一个“监视器”。先随便负一个值-1,其实-2,-3,-4。。。都无所为,主要是为了和下标的0,1,2,3....这些区别开来。然后遍历name[]中的元素,如果发现了null那么就会把i赋值给index,相当于把那个空的下标给找出来,跳出(break)程序。

进入下一个if语句,首先判断index的值变化了没有,如果有了变化(不等于-1了)。说明发现了空NUll的元素,name[index]="田七"; 因为index在上一个if语句中已经从新赋值为null的下标地址,这时直接找到那个空的位置赋值为“田七”就ok了。

整个程序的大体思路:先查找位置————在进行添加、修改、赋值。

3.修改:假如兆六修改成赵六,先找到兆六的位置,把此位置的值重新赋值为赵六 

int index=-1;
for(int i=0;i<name.length;i++){
    if(name[i].equals(""兆六"")){
       index=i;
       break;
    }
}
if(index!=-1){
    name[index]="赵六";
}else{
    System.out.print("不存在兆六");
}

程序分析:第一个if语句同上,第二个if是找到那个位置,从新赋值。

4.删除:假如把"赵六",先要找到删除的位置,把位置后面的内容依次往前推

由于删除数组的逻辑比较复杂直接上个完整的代码(可以直接拷贝到平台调试观看的)
public class Array_summarize {
 
 public static void main(String[] args) {
  
 String name[] = new String []{"重庆0","上海1","北京2","天津3","武汉4","四川5"};
 int index=-1;
   //System.out.println(name.length);
 for(int i=0;i<name.length;i++){
     if(name[i].equals("天津")){
         index=i;  
         //System.out.println(name[i]);
         break;  
     }
 }
 if(index!=-1){
     for(int i=index;i<name.length-1;i++){
          name[i]=name[i+1];
     }
     name[name.length-1]=null;
 }else{
     System.out.println("没有您要删除的内容!");
 }
 
 for(int k = 0;k<name.length;k++){
  System.out.println(name[k]);
 }
 
 }
}

程序分析:红色代码部分属于查找数组中是否有“天津”这个值,并且标注出他的下标和位置。蓝色代码是删除的核心,为什么会“name.length-1”呢?因为name.length得出的是数组的长度(数组的个数)。例子中来看是6个,而下标是长度(个数)减掉1正好是下标的最高位5。我们这里正好是要利用下标来为数组元素挨个赋值。

此程序“天津”在3的一个位置,从3开始把4位置的值向前移一个name[i]=name[i+1];,name.length-1等于5,当i值等于5的时候,for循环停止了,这个时候就把最后一位赋值为null,将四川5覆盖掉,此时数组中天津一值被删除了。

绿色部分就是为了好里理解观看,在删除过后对数组进行的遍历。帮助理解而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值