使用java中的if条件对数组进行排序

时间:2017-01-25 11:25:20

标签: java arrays sorting

下面的程序是在java中,它假设按升序对数组元素进行排序,但它不能正常工作。请尝试下面的程序并解释为什么它没有在'second'数组中存储一些值。第二个数组中的某些值存储为0.这是我无法想象的。请解决此计划并告诉我。谢谢。

public static void main(String[] args) {
    int first[]={9,8,2,6,3};
    int second[]=new int[5];
    for(int i=0;i<first.length;i++){
        int count=0;
        for(int j=0;j<second.length;j++){
            if(first[i]<first[j]){
                count++;
            }
        }      
        if(count == 0){
            second[4]=first[i];
        }
        if(count == 1){
            second[3]=first[i];
        }
        if(count == 2){
            second[2]=first[i];
        }
        if(count == 3){
            second[1]=first[i];
        }
        if(count == 4){
            second[0]=first[i];
        }
        System.out.print(second[i]);
    }
}

3 个答案:

答案 0 :(得分:1)

以下代码将执行您的要求:

public class SortIt{
    public static void main(String[] args){
        int[] arr = {9,8,2,6,3};
        boolean a = true;
        int index = 0;
        int arrBuffer;
        int check = 0;
        while(a){
            if(index + 1 != arr.length){
                if(arr[index] > arr[index+1]){
                    arrBuffer = arr[index+1];
                    arr[index+1] = arr[index];
                    arr[index] = arrBuffer;
                    index += 1;
                    check = 0;
                }
                else if(arr[index] <= arr[index+1]){
                    index += 1;
                    check += 1;
                }
                if(check == arr.length){a = false;}
            }
            else
                index = 0;
        }
        System.out.print("[");
        for(int i = 0; i + 1 < arr.length; i++){
            System.out.print("'" + arr[i] + "', " );
        }
        System.out.println("'" + arr[arr.length-1] + "']");
    }
}

输入:

9,8,2,6,3

输出:

['2', '3', '6', '8', '9']

答案 1 :(得分:0)

public static void main(String[] args) {
    int first[]={9,8,2,6,3};
    int second[]=new int[5];
    for(int i=0;i<first.length;i++){
        int count=0;
        for(int j=0;j<second.length;j++){
            if(first[i]<first[j]){
                count++;
            }
        }      
        if(count == 0){
            second[4]=first[i];
        }
        if(count == 1){
            second[3]=first[i];
        }
        if(count == 2){
            second[2]=first[i];
        }
        if(count == 3){
            second[1]=first[i];
        }
        if(count == 4){
            second[0]=first[i];
        }
        //System.out.print(second[i]);
    }
    for(int a:second){
        System.out.println(a);
    }
}

答案 2 :(得分:0)

你在循环中打印数组,这就是为什么有些值打印为零.Her是修改后的代码。

public static void main(String[] args) {
    int first[]={9,8,2,6,3};
    int second[]=new int[5];
    for(int i=0;i<first.length;i++){
        int count=0;
        for(int j=0;j<second.length;j++){
            if(first[i]<first[j]){
                count++;
            }
        }      
        if(count == 0){
            second[4]=first[i];
        }
        if(count == 1){
            second[3]=first[i];
        }
        if(count == 2){
            second[2]=first[i];
        }
        if(count == 3){
            second[1]=first[i];
        }
        if(count == 4){
            second[0]=first[i];
        }
    }

    System.out.println(new Gson().toJson(second));
}