java - 排序前删除所有空数组值

标签 java arrays sorting

我遇到了一些错误。 我的数组如下所示:

 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/

相关文章:

php - 显示每个卧室数量的图标(酒店网站)php

c - 在 n 个元素的数组中,首先对 n-(root)n 个元素进行排序,我们必须对数组进行排序

python - 在 Python 中,如何在排序的日期列表中查找特定日期之间的位置?

java - 将 xml 转换为特定编程语言的设计模式

java - 如何在 C++ 中使用 JNI 将异常堆栈跟踪重定向到日志文件?

java - 为什么在这个 for 循环之后有一个分号?

javascript - 从数组中删除一个对象,然后更新所有对象的属性

java - 单个卡片 View 上的随机数量的 TextView 不起作用

c# 如何创建动态列表/数组

c# - 按可以为 null 的父对象对 IList<Person> 进行排序