首页 > 编程语言 > 详细

关于数组删除问题

时间:2015-04-10 21:46:00      阅读:330      评论:0      收藏:0      [点我收藏+]

把数组转换为list,调用remove方法进行删除

 

有一个有序整数数组,要求输入一个数字,在数组中查找是否有这个数,

如果有,将该数从数组中删除,要求删除后的数组仍然保持有序;

如果没有,则显示“数组中没有这个数!

本代码还包括了冒泡排序法。

List<Integer> list =new ArrayList<Integer>();使用此语句申明一个list;需要将a数组申明成Integer,才能进行赋值

 for(int i=0;i<a.length;i++){
           list.add(a[i]);
          }
        用此代码进行把a数组添加进list中

if(d==list.get(i)){
            list.remove(i);
            flag=true;}

在进行判断时,必须用list.get(i),不能用list.indexof();indexof用于截取list数组;此方法只能删除一个数,如果待删除的数组为 0 ,0,1,2,3。想要删除0,那么就只能删除一个0。这是因为remove方法删掉一个数字以后,会自动把后面的数字提上前来,也就是说,当第一个0被删除是,第二个0就充当了数组中第一个元素的位置,而for循环中的i已经变成1,所以删除不掉两个0。解决这个问题的办法是:申明一个空数组来存放。代码如下:

 int b[]=new int[5];

int count=0;
          int j=0;
          for(int i=0;i<=a.length-1;i++)
          {
           if(d!=a[i]){
            b[j]=a[i];
            j++;
           count++;
           }
          }
          if(count!=0){
          System.out.print("删除后的数组为:");
          for(int i=0;i<=b.length-count;i++)
          {
           System.out.print(b[i]);
          }
          }else{
           System.out.print("没有找到这个数字");
          }
       

 

 还可以用此方法遍历整个数组进行输出。

for(int i:list)
          {
           System.out.print(i);
          }

 

 

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class Sz_test8 {

 public static void main(String[] args){   

Integer a[]=new Integer[5];

  boolean flag=true;

  Scanner scan=new Scanner(System.in);

  int c=0;

   System.out.println("请输入一个数组:");   

       for(int i=0;i<5;i++)     

     {           a[i]=scan.nextInt();          }  

        for(int i=0;i<a.length;i++)    

      {           for(int j=0;j<a.length-i-1;j++)

          {            if(a[j]>a[j+1])          

  {             c=a[j];    

         a[j]=a[j+1];    

         a[j+1]=c;    

        }   

        }  

        }      

    System.out.println("排序后的数组为:");  

        for(int i=0;i<a.length;i++)  

        {    

       System.out.print(a[i]+"\t");    

      }

  Integer d;   

       System.out.println("请输入要删除的数字");     

              d=scan.nextInt();

List<Integer> list =new ArrayList<Integer>();  

         for(int i=0;i<a.length;i++)

{   

         list.add(a[i]);

          }          

          for(int i=0;i<=list.size()-1;i++)   

        {       

     if(d==list.get(i))

{        

    list.remove(i);       

      flag=true;     

        break;     

       }else{   

          flag=false;      

      }

          }

          if(flag==true){    

       System.out.print("删除后的数组为:");   

        for(int i=0;i<=list.size()-1;i++)

          {            System.out.print(list.get(i));

          }      

     }else{    

        System.out.print("没有找到这个数字");      

     }        

             } }

关于数组删除问题

原文:http://www.cnblogs.com/zwygogogo/p/4415609.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!