-4

バブル ソート クラスを呼び出そうとすると、エラーが発生します。しかし、私はそれを見つけることができません。これは私のバブル ソート クラスです。

public static void Sort2(double[] yourNumbers) {
        double swap; 
        for(int i = 0; i < yourNumbers.length-1; i++){
            for(int d = 0; d < yourNumbers.length-1; d++){
                if(yourNumbers[d] > yourNumbers[d+1]){ 
                    //swap feature
                    swap = yourNumbers[d];
                    yourNumbers[d] = yourNumbers[d+1];
                    yourNumbers[d+1] = swap;

                }
            }
        }
    }

これが私の主なメソッドです(ここでSort2メソッドを呼び出すと、エラーが発生しました:

sort.java 型のメソッド Sort2(double[]) は、引数 (int) には適用されません。

        System.out.println("Size");
        int yourNumbers = scan.nextInt();
        double[] array = new double[yourNumbers];

        System.out.println("Numbers");

        for(int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
            array[i] = scan.nextDouble();

        }
            Sort2(array);

ここで何度も質問されたことは知っていますが、正しく理解できないと感じています。助けてくれますか ?PS: の使用は許可されていませんArrayList

編集:これは私が今使ったコードです。まだ動作しません: 編集 2: このhttp://www.leepoint.net/notes-java/data/arrays/70sorting.htmlの助けを借りて、私はそれを得ました。1行ですべて解決

import java.util.Scanner;

public class Bublesort{

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.println("Size");
        int yourNumbers = scan.nextInt();
        double[] array = new double[yourNumbers];

        System.out.println("Numbers");

        for(int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
            array[i] = scan.nextDouble();
         }

       Sort2(array);
    **System.out.println(Arrays.toString(array));** 

    }
    public static void Sort2(double[] yourNumbers) {
        double swap; 
         for(int i = 0; i < yourNumbers.length - 1; i++){
                for(int d = i + 1; d < yourNumbers.length; d++){
                    if(yourNumbers[i] > yourNumbers[d]){ 
                        //swap feature
                        swap = yourNumbers[i];
                        yourNumbers[i] = yourNumbers[d];
                        yourNumbers[d] = swap;

                    }
                }
            }

    }}
4

3 に答える 3

0

intエラーは、を受け入れるメソッドにを渡すことができないことを示していdouble[]ますargument

   System.out.println("Size");
        int yourNumbers = scan.nextInt();
        double[] array = new double[yourNumbers];

        System.out.println("Numbers");

        for(int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
            array[i] = scan.nextDouble();
         }

       sort2(array);//**should work fine**
于 2012-10-30T20:59:38.650 に答える
0

使用するには、ArrayListインポートする必要がありjava.util.ArrayList;ます。Sort2() 関数に整数を渡しているため、エラーが発生しています。double の配列を渡す必要があります。また、sort2関数は配列をソートしますが、Javaは引数を値で渡すため、それを参照する方法はありません..関数double[] sort2(double[] array)を用意してから、ソートされた配列を返す必要があります。

于 2012-10-30T21:02:03.597 に答える
0

ソートルーチンのより良いバージョンは次のようになります: N*(n-1) / 2 反復 vs n^2

         for(int i = 0; i < yourNumbers.length - 1; i++){
            for(int d = i + 1; d < yourNumbers.length; d++){
                if(yourNumbers[i] > yourNumbers[d]){ 
                    //swap feature
                    swap = yourNumbers[i];
                    yourNumbers[i] = yourNumbers[d];
                    yourNumbers[d] = swap;

                }
            }
        }
于 2012-10-30T21:07:22.967 に答える