原题是这样.
提供一个已经排序好的数组.(1维),提示用户再输入一个数,然后按序列插入数组中..我自己的代码实现不了 . 有很多问题..   请高人帮我改下..
import java.util.Arrays;
import java.util.Scanner;
public class ChaRuSort
{
public static void main(String[] args) 
{
int[] a = new int[]{1,3,5};

int[] b = new int[10];
for(int i =0;i<a.length;i++)
{
b[i] = a[i];
}

System.out.println("插入前的数组:");
for(int i = 0;i<b.length;i++)
System.out.print(b[i]);

System.out.println();

System.out.println("输入一个数");
int num = new Scanner(System.in).nextInt();

for(int i = 0;i<b.length-1;i++)
{
int temp;
if(num < b[i])
{
temp = b[i];
b[i] = num;
b[i+1] = temp;
break;
}
}
//插入后的数组
for(int i = 0;i<b.length;i++)
System.out.print(b[i] + " ");
}}我还想到另外一种方法,就是先把排序好了的数组,强转成一个字符串.  然后再向字符串里添加一个数字,再强转
为Int类型,,  再重新排序,, 可是
int[]  a = {1,2,3};
String b = String.valueOf(a); 这样的话, b里面是乱码.  高手帮我看看了.. 谢谢了..

解决方案 »

  1.   

    经过我对你程序的修改,下面的程序能够实现你的功能,希望对你有帮助:
    import java.util.Arrays;
    import java.util.Scanner;
    public class ChaRuSort {
    public static void main(String[] args) {
            int[] a = new int[]{1,3,5};
            int[] a1=new int[a.length+1];
            for(int i =0;i<a.length;i++)
            {
                a1[i] = a[i];
            }                    
            System.out.println("插入前的数组:");
            for(int i = 0;i<a.length;i++)
                System.out.print(" "+a[i]);
            
            System.out.println();
            
            System.out.println("输入一个数");
            int num = new Scanner(System.in).nextInt();
            a1[a.length]=num;        
            Arrays.sort(a1);        
            System.out.println("排序后的数组:");
            for(int i = 0;i<a1.length;i++)
            System.out.print(a1[i] + " ");
    }
    }
    而且程序的运行结果也是完全正确的.
      

  2.   

    主要步骤:for(int i=a.length; i>=0 && num < b[i]; i--)
    {
      b[i+1] = b[i];
    }
    b[i++] = num;
      

  3.   


     int  a[] = new int[]{1,3,5,7,10};
         int  b[] = new int [a.length+1];
     boolean hasinsert = false;
         
         int num = new Scanner(System.in).nextInt();
        
         for (int i = 0; i < b.length; i++) {

    if (!hasinsert) {
    if (num<=a[i]) {
    b[i]=num;
    hasinsert = true;
    }else {

    b[i]=a[i];
    }
    }else {
    b[i]=a[i-1];
    }
         }
         for (int i = 0; i < b.length; i++) {
    System.out.print(b[i]+",");

    }
      

  4.   

    public static void main(String args[]){
    int [] A = new int[]{1,3,5,7,9};
    int [] B = new int[6];
    for(int i=0;i<A.length;i++){
    B[i] = A[i];
    }
    // for(int o:B){
    // System.out.print(o+"\t");
    // }
    int in = new Scanner(System.in).nextInt();
    for(int j=0;j<B.length;j++){
    int temp = B[j];
    if(in<temp){
    B[j] = in;
    in = temp;
    }else if(B[j]==0){
    B[j]=in;
    }
    }
    for(int o:B){
    System.out.print(o+"\t");
    }
    }
      

  5.   

    1楼能实现,但重新排序没什么必要,2楼的好。原先的数组既然已经排好序,那就开创一个a.length+1的数组,从后开始比较:
    a[i]比num大的,则后移一位,a[i++] = a[i],直到找到第一个a[i] < num,把num插到a[i]之后就可以了。
    平均查找时间是N/2
      

  6.   

    1楼的简单,先把输入的数字放在最后,然后Arrays.sort()一下,ok了!
      

  7.   


    import java.util.Scanner;
    public class ChaRuSort
    {
        public static void main(String[] args) 
        {
            int[] a = new int[]{1,3,5};
            
            int[] b = new int[4];
                    
            int m = 0;//用来控制a
            int j = 0;//用来控制输入的数
            int k = 0;//用来控制k
            
            //输入出插入前的数组
            System.out.println("插入前的数组:");
            for(int i = 0;i<a.length;i++)
                System.out.print(a[i]);
            
            System.out.println();
            
            System.out.println("输入一个数");
            int num = new Scanner(System.in).nextInt();
            
            //判断并往b中加数据
            while(m<a.length&&j<1){
                if(a[m]<=num){
                   b[k] = a[m];
                   m++;
                   k++;
                }else{
                    b[k] = num;
                    j++;
                    k++;
                }
            }
            
            //当输入的数不是最大时执行
            while(m<a.length){
                b[k] = a[m];
                m++;
                k++;
            }
            
            //当输入的数为最大时执行
            while(j<1){
                b[k] = num;
                j++;
                k++;
            }
            
            for(int i = 0;i<b.length;i++)
            System.out.print(b[i]);
        }}