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 循环来获取数组中的索引。

于 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 回答