0

私は Java の初心者で、入力された数値を昇順または降順で並べ替える簡単なメソッドを作成しようとしています。ただし、繰り返し値を入れることができないという問題があります。配列の特定の項目のキーを取得する方法はありますか??

私のコード:

import java.io.Console;

public class TestSort {
    public static void main(String args[]) {
        Console c = System.console();
        if (c == null) {
            System.err.println("No console.");
            System.exit(1);
        }

        System.out.println("TESTSORT.java");
        System.out.println("-------------");
        System.out.println("Type in a set of numbers here:");
        String in = c.readLine();
        System.out.println("(A)scending or (D)escending");
        String ad = c.readLine();

        boolean d = false;

        if(ad.equals("a")) d = false;
        else if(ad.equals("d")) d = true;
        else {
            System.out.println("Invalid Input.");
            System.exit(1);
        }

        String[] in2 = in.split(" ");
        int[] x = new int[in2.length];

        int count1 = 0;
        for(String val : in2)
            x[count1++] = Integer.parseInt(val);

        int[] a = new int[x.length];
        int count = 0;

        for(int y : x) {
            for(int z : x) {
                // if index of y equals index of z continue
                if(z < y) count++;
            }
            a[count] = y;
            count = 0;
        }

        if(d) {
            int[] arr3 = new int[a.length];
            int length = a.length;
            for(int b : a) arr3[--length] = b;
            for(int b : arr3) System.out.println(b);
        } else
            for(int b : a)
                System.out.println(b);
    }
}

このプログラムは、自分自身よりも小さい他の数値の数を数えるだけですが、自分自身は含みません。ただし、同じ値を持つ他の数値との区別はありません。

助けていただければ幸いです。

ありがとう。

4

3 に答える 3

3

配列の特定の値のインデックスを取得するには、配列をループする必要があります。ただし、同じ値を持つ複数のエントリがある場合、このアプローチは機能しません (変更なし)。

 int indexVal = -1;
 int inputValue;  // This is your input vlaue you are trying to find
 for(int i = 0; i < array.length ; i++)
 {
     if (array[i] == inputValue)
     {
         indexVal = i;
         break;
     }
 }

組み込みの配列ソートについては、 Array.sortも参照してください。

于 2013-08-18T21:21:45.047 に答える
1

インデックスが必要な場合は、 for each ループを使用しないでください。配列内のインデックスを取得するには、通常の for ループを使用する必要があります。

于 2013-08-18T21:22:00.157 に答える
0

SortedSetはこれに最適です。セットとして、値の重複は許可されず、自動的にソートされます!

要素をセットに追加するだけです。例:

SortedSet<Integer> set = new SortedSet<Integer>();
for(String value : in2.split(" ")){
    set.add(Integer.parseInt(value));
}

セットの順序を逆にするには、次のようにします。

SortedSet<Integer> descending = set.descendingSet();

配列と同じようにセットを反復処理することもできます:

for(Integer i : set){
    //Do something
}

幸運を!

于 2013-08-18T21:32:25.793 に答える