无法按字母顺序对数组进行排序

时间:2014-04-22 00:06:02

标签: java arrays sorting alphabetical

我目前正在尝试按字母顺序对数组进行排序 我在第3步遇到了麻烦。这是我目前的代码:

import java.util.Arrays;
import hsa.Console;

public class HowToSortAnArray {
    static Console c;
    public static void main(String[] args) {
        c = new Console ();

        String[] myStrArray = new String[500];

        for(int i=0;i<5;i++) {
            c.print("Input word: ");
            myStrArray[i]=c.readLine();
        }

        Arrays.sort(myStrArray, String.CASE_INSENSITIVE_ORDER);

        for (int a = 0; a < myStrArray.length; a++) {
           c.println(myStrArray[a]);
        }
    }
}

任何人都可以向我解释为什么这段代码不起作用是这样的:

String[] words = new String[] {"b", "b", "a", "D"};
Arrays.sort(words, String.CASE_INSENSITIVE_ORDER);

for (int a = 0; a < words.length; a++) {
    c.println(words[a]);
}

是否与声明数组值有关?我很迷茫。

3 个答案:

答案 0 :(得分:0)

此代码完成工作:

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class TestSort {
    public static void main(String[] args) {
        Set<String> wordsSet = new HashSet<>();
        Scanner s = new Scanner(System.in);
        while (true) {
            System.out.print("Input word: ");
            String newLine = s.nextLine();
            if (!wordsSet.add(newLine)) {
                break;
            }
        }
        String[] words = wordsSet.toArray(new String[wordsSet.size()]);
        Arrays.sort(words, String.CASE_INSENSITIVE_ORDER);
        System.out.println(Arrays.toString(words));
        return;
    }
}

您可以使用java.util.Set确保没有重复项。如果您添加的内容已经存在于集合中,则java.util.Set.add将返回false,因此您可以将此作为条件退出input-enter循环。

答案 1 :(得分:0)

您需要将您的行更改为:

 for(int i=0;i<myStrArray.length;i++);





import java.io.Console;
import java.util.Arrays;

public class HowToSortAnArray {
static Console c;
public static void main(String[] args) {

    String[] myStrArray = new String[5];

    for(int i=0;i<myStrArray.length;i++) {
         System.out.println("Input word: ");
        myStrArray[i]= "abdfg";
    }

    Arrays.sort(myStrArray, String.CASE_INSENSITIVE_ORDER);

    for (int a = 0; a < myStrArray.length; a++) {
         System.out.println(myStrArray[a]);
    }
}

}

答案 2 :(得分:0)

用java.io.Console替换你的hsa.Console将修复你的错误。即。

import java.io.Console;

...

c = System.console();

...

然后使用c.printf(...)代替c.println()。