编写程序。向整形数组的指定位置插入元素,并输出插入前后数组的值。我写了好多次,不能让数组位置后移一位package cn.puruidong.accp_14;/**
 * @author PuRuidong
 *
 */
import java.util.Scanner;
public class Fivenum { /**
 * @param args
 */
private int num [] = new int[] {10,20,30,55,99};//原数组
private int no [] = new int [num.length+1];//新数组
private static Scanner sc = new Scanner (System.in);
private static int index ;//录入想插入的位置
private static int value ;//录入想插入的值

public void show (int index ,int value){ ////这里面的int index,和int value是什么含义?我迷糊了
////////////输出插入前的数组
System.out.println("插入前的数组:");
for (int i=0;i<num.length;i++){//输出插入前的数组
System.out.print(num[i]+" ");
}
/////赋值数组
for (int c=0;c<num.length;c++){
no[c] = num[c];
}
System.out.println();
System.out.println("请输入想插入的位置(0~5):");
index = sc.nextInt(); //录入想插入的位置
System.out.println("请输入想插入的数值:");
value = sc.nextInt(); //录入想插入的值
for (int j=no.length-1;j>index;j++){ ////元素后移,就是这出问题了
no[j] = no[j-1];
}
no[index] = value; //将 value的值放在index位置
System.out.println("插入后的数组:");
/////输出插入后的数组
for (int k=0;k<no.length;k++){
System.out.println(no[k]);
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Fivenum center = new Fivenum ();
center.show(index, value); }}

解决方案 »

  1.   

     for (int j=no.length-1;j>index;j--){ 
                no[j] = no[j-1];
            }还有一个问题,进行循环之前,最好判断下index的值,防止溢出。
      

  2.   


    import java.util.Scanner;public class Fivenum {
    private int num[] = new int[] { 10, 20, 30, 55, 99 };// 原数组
    private int no[] = null;// 新数组 public Fivenum(int... data) {
    if (data != null && data.length != 0) {
    this.num = data;
    }
    no = new int[num.length + 1]; } public void show() {
    // //////////输出插入前的数组
    Scanner sc = new Scanner(System.in);
    System.out.println("插入前的数组:");
    for (int i = 0; i < num.length; i++) {// 输出插入前的数组
    System.out.print(num[i] + " ");
    }
    // ///赋值数组
    for (int c = 0; c < num.length; c++) {
    no[c] = num[c];
    }
    System.out.println();
    System.out.println("请输入想插入的位置(0~5):");
    int index = sc.nextInt(); // 录入想插入的位置
    System.out.println("请输入想插入的数值:");
    int value = sc.nextInt(); // 录入想插入的值
    for (int j = num.length; j > index; j--) { // //元素后移,就是这出问题了
    no[j] = no[j - 1];
    }
    no[index] = value; // 将 value的值放在index位置
    System.out.println("插入后的数组:");
    // ///输出插入后的数组
    for (int k = 0; k < no.length; k++) {
    System.out.println(no[k]);
    }
    } public static void main(String[] args) {
    // TODO Auto-generated method stub
    Fivenum center = new Fivenum();
    // Fivenum center = new Fivenum(new int[]{ 10, 20, 30, 55,60, 99 });
    center.show(); }}
      

  3.   

    如果程序能改的话,不妨改用List来做,List可以直接插入元素到任意位置的。
      

  4.   

    来晚了打个酱油,j--即可。index表示要插入的位置,value表示插入的数值是多少。
      

  5.   

     给楼主个建议,我这里就不调试你的程序了,
    首先你为什么要用数组插入,什么需求?数组的插入性能很低,整体后移,不建议这么用,如果你是学习,那就没什么说的了,但是实际中很少这么用,你可以去研究下集合,看看那个更适合你,会事半功倍的。个人技术博客 :  http://www.happyalaric.com
      

  6.   

     for (int j=no.length-1;j>index;j++){ ////元素后移,就是这出问题了
                no[j] = no[j-1];
            }
       这个元素后移有问题吧
    应该是for (int j=no.length-1;j>index;j--){             no[j] = no[j-1];
            }
    这样子才可以达到后移的作用啊..然后再no[index] = value;  就可以了....
      

  7.   


      public static void main(String args[]){  
           int i2[]=new int[]{0,1,2,3,4,5,};
           int i[]=new int[i2.length+1];
           Random R=new Random();
           int index=R.nextInt(i.length-1);
           System.out.println("数组的插入位置是i["+index+"]");
           
           int value=R.nextInt(10);
           System.out.println("value的值是:"+value);
            for(int j=0;j<i2.length;j++)
            {
             i[j]=i2[j];
             System.out.print(i[j]+" ");
            }
            System.out.println();
           for (int j=i.length-1;j>index;j--){ ////元素后移,就是这出问题了
               i[j] = i[j-1];
                      }
         i[index]=value;
           for(int k=0;k<i.length;k++)
           {
     
            System.out.print(i[k]+" ");
           }
          
    }  } 
    希望对楼主有用。。
      

  8.   


    import java.util.Scanner;
    public class Fivenum {    /**
         * @param args
         */
        private int num [] = new int[] {10,20,30,55,99};//原数组
        private int no [] = new int [num.length+1];//新数组
        private static Scanner sc = new Scanner (System.in);
        private static int index ;//录入想插入的位置
        private static int value ;//录入想插入的值
        
        public void show (int index ,int value){ ////这里面的int index,和int value是什么含义?我迷糊了
            ////////////输出插入前的数组
            System.out.println("插入前的数组:");
            for (int i=0;i<num.length;i++){//输出插入前的数组
                System.out.print(num[i]+" ");
            }
            /////赋值数组
            for (int c=0;c<num.length;c++){
                no[c] = num[c];
            }
            System.out.println();
            System.out.println("请输入想插入的位置(0~5):");
            index = sc.nextInt(); //录入想插入的位置
            System.out.println("请输入想插入的数值:");
            value = sc.nextInt(); //录入想插入的值
            for (int j=no.length-1;j>index;j--){ ////元素后移,就是这出问题了
             System.out.println(j);
                no[j] = no[j-1];
            }
            no[index] = value; //将 value的值放在index位置
            System.out.println("插入后的数组:");
            /////输出插入后的数组
            for (int k=0;k<no.length;k++)
                System.out.print(no[k]+" ");
            System.out.println();
        }
        
        public static void main(String[] args) {
        Fivenum center = new Fivenum ();
        center.show(index, value);    }}
      

  9.   

    import java.util.Scanner;
    public class Test {    /**
         * @param args
         */
    public static void main(String []args)
    {
    Test a=new Test();
    a.show();
    }

        private int num [] = new int[] {10,20,30,55,99};//原数组
        private int no [] = new int [num.length+1];//新数组
        private static Scanner sc = new Scanner (System.in);
        

        
        public void show (){ ////这里面的int index,和int value是什么含义?我迷糊了
            ////////////输出插入前的数组
            System.out.println("插入前的数组:");
            for (int i=0;i<num.length;i++){//输出插入前的数组
                System.out.print(num[i]+" ");
            }
            /////赋值数组
           
            System.out.println();
            System.out.println("请输入想插入的位置(0~5):");
            int index = sc.nextInt()-1; //录入想插入的位置
            System.out.println("请输入想插入的数值:");
            int value = sc.nextInt(); //录入想插入的值
            for (int c=0;c<index;c++){
                no[c] = num[c];
            }
            no[index]=value;
            for (int j=num.length;j>index;j--){ ////元素后移,就是这出问题了
                no[j] = num[j-1];
            }
            
            System.out.println("插入后的数组:");
            /////输出插入后的数组
            for (int k=0;k<no.length;k++){
                System.out.println(no[k]);
            }
        }
        
       
        }
    防止溢出的我就不加了