我遇到了一些错误。 我的数组如下所示:
String words[] = new String[50000];
要求用户将值输入到数组中
words[i]=c.readLine();
一旦输入重复的值,程序将退出无限循环。现在程序必须按字母顺序对数组进行排序,但它试图对一些空值进行排序并返回错误。
Arrays.sort(words, String.CASE_INSENSITIVE_ORDER);
for (int a = 0; a < words.length; a++) {
c.println(words[a]);
}
仅当用户输入正好 50000 个值时,该程序才会运行。我无法猜测用户将输入多少个值,如何解决这个问题?
我想我必须在按字母顺序排序之前以某种方式删除所有空值。有什么想法吗?
最佳答案
如果您不确定大小
,请使用ArrayList
。不要对其进行硬编码。
但是如果你坚持使用数组
,你可以尝试:
int notNull=words.length;
for(int i= 0;i<words.length;i++){
if(words[i]==null){
notNull=i;
break;
}
}
String[] newWords=Arrays.copyOfRange(words, 0, notNull);
newWords
数组将是没有空值的新数组
关于java - 排序前删除所有空数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23208585/