本帖最后由 java2000_net 于 2008-08-05 16:22:16 编辑

解决方案 »

  1.   


    for (int j = 0; j < b.length-1; j++) 
    if (b[j] > b[j + 1]) { 
    int temp = b[j]; 
    b[j] = b[j + 1]; 
    b[j + 1] = b[j]; 

    这个用来干么的?不如直接搜最小数字的下标,何必换来换去,而且这样换是不能保证b[0]是最小的
      

  2.   

    提供我的想法  利用冒泡排序的第一次循环 可以知道 总是将最大的一个数置于数组的最后一个  弹出他  同时生成一个不包括上一个数组最大值的数组  一次递归下去...public class Find5Max {
    public static void find5Max (int[] intArray, int iteratorNum){
    if (iteratorNum < 1)
    return;

    for (int i=0; i<intArray.length-1; i++){
    if (intArray[i] > intArray[i+1]){
    int temp = intArray[i+1];
    intArray[i+1] = intArray[i];
    intArray[i] = temp;
    }
    }

    System.out.print(intArray[intArray.length-1] +" ");

    int[] tempArray = new int[intArray.length-1];

    for (int i=0; i<intArray.length-1; i++)
    tempArray[i] = intArray[i];

    find5Max(tempArray, iteratorNum-1);
    }
    public static void main(String args[]){
    int[] intArray = {3, 1, 4, 2, 5, 7, 6, 9, 8, 10};

    find5Max(intArray, 5);

    }
    }10 9 8 7 6 
      

  3.   

    [color=#FF0000]for (int i = 5; i < a.length - 1; i++) {color]
    就是这条语句的问题~~首先不应该减1,a.length就是你输入的总的个数其次if (b[j] > b[j + 1]) { 
    int temp = b[j]; 
    b[j] = b[j + 1]; 
    //b[j + 1] = b[j]; 
    b[j+1] = temp; //这样才交换了

      

  4.   


    没关系,只是看你用到了Arrays.copyOf()这个API了~~
      

  5.   

    呵呵,这个你说的temp的地方我开始复制到论坛里的时候程序就那样写,可是晚上我检查后发现不对,所以写回来了,但是还是不成功,而且论坛也不能让我编辑帖子了其实我问题后来自己解决了,关键不在于这个temp,而是在这个b[]怎么保证b[0]一定是最小的,我原来写的方法不能完全保证b[0]是最小的,一旦原先的b[0]或者是b[1]中有一个最小才会出现我的结果,不然b[0]就不保证是最小的应该写成 for (int j = b.length - 1; j > 0; j--) {
    if (b[j] < b[j - 1]) {
    int temp = b[j];
    b[j] = b[j - 1];
    b[j - 1] = temp;
    }
    要倒过来比,不能正过来比现在我已经自行解决了,感谢大家的热心解答
    先给出我完整的代码,加上3楼朋友的方法,一共2种方法,大家可以分享下,觉得哪个好就用哪个,呵呵。当然或许大家也有更好的方法,也请大家不吝指教
    package GetMax;import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Arrays;class GetMax {
    public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String c = br.readLine();
    String str[] = c.split(",");
    int[] a = new int[str.length];
    for (int i = 0; i < a.length; i++)
    a[i] = Integer.parseInt(str[i]); for (int i = 0; i < a.length; i++)
    System.out.print(a[i] + " ");
    System.out.println(); int[] b = new int[5];
    b = Arrays.copyOf(a, 5);
    for (int i = 0; i < b.length; i++)
    System.out.print(b[i] + " ");
    System.out.println(); for (int i = 5; i < a.length; i++) {
    for (int j = b.length - 1; j > 0; j--) {
    if (b[j] < b[j - 1]) {
    int temp = b[j];
    b[j] = b[j - 1];
    b[j - 1] = temp;
    }
    }
    if (a[i] > b[0])
    b[0] = a[i];
    } for (int i = 0; i < b.length; i++)
    System.out.print(b[i] + " ");
    }
    }