String[] a = {"658",null,"456","78","98",null,"52"};有一个类似于这样的数组,现在我想把null的值移到最后面。类似于:String[] a = {"658","456","78","98","52",null,null};条件是只能用一个for循环,并且尽量不要用第二个变量。
总的来说,就是在数组本身内进行排序。。

解决方案 »

  1.   

    思路很简单了,但是一个实质的循环完成不了,肯定要借助goto来模拟一个循环做到.
    把前面的null替换靠后面的非null就可以了.
      

  2.   

    String[] a = {"658",null,"456","78","98",null,"52"};
    String[] b = new String[a.length];
    for (int i = 0, j = 0; i < a.length; i++) {
    if (a[i] != null) {
    b[j++] = a[i];
    }
    }
    a = b;
    我想还是不要浪费时间了,想那么复杂的算法干什么,实用就是真理,呵呵
      

  3.   

    对了,既然healer_kx(天降甘草处于好事多魔期间?!) 提到了GOTO,我想再顺便问下在JAVA中GOTO是不是仅仅是个关键字而已,而不能有任何作用?呵呵,twenty_three(花非花)的办法不错,如果实在不行的话,我就这么做了....顺便问一下,a = b这句话是不是有问题?我记得java中把b付给a的话,
    a仅仅是b的一个指针吧?
      

  4.   

    public class ArraySort {
    public static void main(String[] args) {
    String[] a = {"658",null,"456","78","98",null,"52"};
    int p = a.length-1;
    for(int i=p; i>=0; i--) {
    if(a[i]==null) {
    a[i] = a[p];
    a[p--] = null;
    }
    }
    for(int i=0; i<a.length; i++ ) System.out.println(a[i]);
    }
    }
    输出:
    658
    52
    456
    78
    98
    null
    null
      

  5.   

    String[] a = {"658",null,"456","78","98",null,"52"};
            
            Arrays.sort(a,new Comparator(){ public int compare(Object o1, Object o2) {
            if(o1==null)return 1;
            if(o2==null)return -1;
    return 0;
    }
            
            }
            );
            System.out.println(Arrays.asList(a));
      

  6.   

    楼上的有没有自己编译一下?能编译成功吗?数组引用为 null,会抛出 NullPointerException