有一个整型数组,长度和元素确定,元素不重复,如:
a[]={1,2,3,4,5}
现在我想抽取其中若干个,例如抽到a[1],a[3],使数组变为a[]={1,3,5}(即后面的要补上去)
由于原先长度已确定,所以可以使数组成为a={1,3,5,5,5}即可.

解决方案 »

  1.   

    a={1,3,4,5,5},a={1,3,5,4,5},a={1,3,4,4,4}。。
    这些情况行不行?
      

  2.   

    楼上的,不可以
    就是在一个数组中,抽取若干个出来,后面的补上,就是a[i]=a[i+1];
      

  3.   

    我是要抽取的不要,剩下的
    我没有讲明白
    例如for(int i=0;i<a.length;i++){
           if(i==被抽){
             for(int j=i;j<a.length-1;j++){
               a[j]=a[j+1];}}}
    上面程序抽取一个,可以达到我想要的效果,但是抽取两个,就不行了
      

  4.   


    public class Hugo{
    public static void main(String [] args){
    int [] A ={1,2,3,4,5};
    Test1 t = new Test1();
    t.delete(A, 1);
    t.delete(A, 2);
    for(int i=0;i<A.length;i++){
    System.out.println(A[i]);
    }
    }

    public int[] delete(int[] Array,int n){

    for(int j=n;j<Array.length-1;j++){
    Array[j] = Array[j+1];
    }

    return Array;
    }
    }
    是不是这样
      

  5.   

    import java.util.Scanner;public class Algorithm {
    public static void main(String[] args){
    int[] a = {1,2,3,4,5};
    int[] p = new int[a.length];
    int k = 0;

    //输入要抽取的数组索引号
    while(k!=-1){
    Scanner in = new Scanner(System.in);
    k = in.nextInt();
    if(k==-1){
    }else{
    a[k] = -1;
    }
    }

    //如果抽取最后一个数字时执行以下代码
    if(a[a.length-1] == -1){
    int o = a.length-1;
    for(;o>0;o--){
    if(a[o] != -1){
    a[a.length-1] = a[o];
    break;
    }
    }
    if(o == 0){
    a[a.length-1] = 0;
    }
    }

    //抽取过程
    for(int i = 0,s = 0;s<=a.length-1;){
    if(a[i] == -1){
    }else{
    p[s++] = a[i]; 
    }
    i++;
    if(i>a.length-1){
    i = a.length - 1;
    }
    }

    for(int i = 0;i<p.length;i++){
    System.out.println(p[i]);
    }
    }
    }
      

  6.   


    import java.util.ArrayList;
    import java.util.List;
     public class ArrayWay{
        public static void main(String [] args){
         int a[]={1,2,3,4,5,6,7,8,9,10,11,12,13}; 
         int b[]={2,5,6,8,9};//将随机抽出的数放在一个数组中。
         List<Integer> list=new ArrayList<Integer>();
         list=select(a,b);
         for(Object o:list){
         System.out.print(o);
         }
        }
        static List select(int a[],int n[]){
         int num=0;
         List<Integer> list=new ArrayList<Integer>();
         for(int i=0;i<a.length;i++){
         list.add(a[i]);
         }
         for(int i=0;i<a.length;i++){
         for(int j=0;j<n.length;j++){
             if(a[i]==n[j]){
                 list.remove(i+num);
                 num--;
                 break;
             }
         }
         }
         int number=a.length-list.size();
         for(int i=1;i<=number;i++){
         list.add(a[a.length-1]);
         }
         return list;
        }
    }
      

  7.   

    我是要抽取的不要,剩下的
    我没有讲明白
    例如for(int i=0;i <a.length;i++){
          if(i==被抽){
            for(int j=i;j <a.length-1;j++){
              a[j]=a[j+1];}}}
    上面程序抽取一个,可以达到我想要的效果,但是抽取两个,就不行了这个i也够倒霉的。
      

  8.   


    import java.util.*;
    class StackTest {
    public static void main(String[] args) {
    //假设原来数组长度是10
    int[] a = {1,2,4};
    ArrayDeque<Integer> s = new ArrayDeque<Integer>();
    ArrayList<Integer> al = new ArrayList<Integer>();
    for(int i=0; i<a.length; i++) {
    s.add(a[i]);
    }
    for(int j=0; j<a.length-1; j++) {
    al.add(s.poll());
    }
    int q = s.peek();
    for(int k=(10-al.size()); k>0; k-- ) {
    al.add(q);
    }
    Iterator it = al.iterator();
    while(it.hasNext()) {
    System.out.print(it.next()+" ");
    }
    }
    }
    我也是新手 
    随便写的 
    不知合不合题意