我目前正在尝试按字母顺序对数组进行排序 我在第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]);
}
是否与声明数组值有关?我很迷茫。
答案 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()。