Java 如何使用array.toString()打印数组的所有非空元素

Java 如何使用array.toString()打印数组的所有非空元素,java,arrays,Java,Arrays,所以我需要打印出一个整数数组。问题是,当用户输入要处理和排序的数字时,我不知道用户将输入多少数字。唯一的规则是用户只能输入少于10000个数字 所以我制作了一个可以容纳10000个数字的数组,但是如果用户在数组中输入的数字少于10000个,那么array.toString()函数会打印出所有内容,甚至是空白 是否有任何方法可以绕过这个问题,或者是否有任何其他方法可以在一行中输出数组,将其格式化为如下输出:[1,2,3,4,5,6] 非常感谢 将用户的输入存储在ArrayList中,然后只打印my

所以我需要打印出一个整数数组。问题是,当用户输入要处理和排序的数字时,我不知道用户将输入多少数字。唯一的规则是用户只能输入少于10000个数字

所以我制作了一个可以容纳10000个数字的数组,但是如果用户在数组中输入的数字少于10000个,那么
array.toString()
函数会打印出所有内容,甚至是空白

是否有任何方法可以绕过这个问题,或者是否有任何其他方法可以在一行中输出数组,将其格式化为如下输出:
[1,2,3,4,5,6]


非常感谢

将用户的输入存储在
ArrayList
中,然后只打印
myarryist.toString()
将用户的输入存储在
ArrayList
中,然后只打印
myarryist.toString()
如果您想要Java中的动态数组,最好的方法是学习如何使用列表:

List<Integer> integers = new ArrayList<Integer>();
List integers=new ArrayList();
它只打印你输入的数字

如果您不想重写程序,这也是一个解决方案:

    Integer[]x = new Integer[50];
    List<Integer> integers = new ArrayList<Integer>();        
    integers = new ArrayList<Integer>(Arrays.asList(x));
Integer[]x=新整数[50];
列表整数=新的ArrayList();
整数=新的ArrayList(Arrays.asList(x));

如果您想要Java中的动态数组,最好的方法是学习如何使用列表:

List<Integer> integers = new ArrayList<Integer>();
List integers=new ArrayList();
它只打印你输入的数字

如果您不想重写程序,这也是一个解决方案:

    Integer[]x = new Integer[50];
    List<Integer> integers = new ArrayList<Integer>();        
    integers = new ArrayList<Integer>(Arrays.asList(x));
Integer[]x=新整数[50];
列表整数=新的ArrayList();
整数=新的ArrayList(Arrays.asList(x));
一个
ArrayList
(对于泛型,可以选择
)。是一个数组,如果有更多的输入可用,它会动态添加更多内存。向此类列表中添加元素的摊余成本为O(1),但它提供了一种方便的输入处理方法

要回答您的问题,@Mureinik已经回答了,您可以使用
ArrayList.toString()
将列表转换为文本表示

要回答您真正的问题,您可以执行以下操作:

public static<T> String toStringArrayNonNulls (T[] data) {
    StringBuilder sb = new StringBuilder();
    sb.append("[");
    int n = data.length;
    int i = 0;
    for(; i < n; i++) {
        if(data[i] != null) {
            sb.append(data[i].toString());
            break;
        }
    }
    for(; i < n; i++) {
        if(data[i] != null) {
            sb.append(",");
            sb.append(data[i].toString());
        }
    }
    sb.append("]");
    return sb.toString();
}
ArrayList
(对于泛型,可以选择
)。是一个数组,如果有更多的输入可用,它会动态添加更多内存。向此类列表中添加元素的摊余成本为O(1),但它提供了一种方便的输入处理方法

要回答您的问题,@Mureinik已经回答了,您可以使用
ArrayList.toString()
将列表转换为文本表示

要回答您真正的问题,您可以执行以下操作:

public static<T> String toStringArrayNonNulls (T[] data) {
    StringBuilder sb = new StringBuilder();
    sb.append("[");
    int n = data.length;
    int i = 0;
    for(; i < n; i++) {
        if(data[i] != null) {
            sb.append(data[i].toString());
            break;
        }
    }
    for(; i < n; i++) {
        if(data[i] != null) {
            sb.append(",");
            sb.append(data[i].toString());
        }
    }
    sb.append("]");
    return sb.toString();
}

使用
ArrayList
怎么样?使用列表而不是数组。如果确实需要(但不应该),则将其转换回数组。您可以很容易地遍历列表,并且它具有动态长度。使用
ArrayList
怎么样?使用列表而不是数组。如果确实需要(但不应该),则将其转换回数组。你可以很容易地遍历列表,它有一个动态的长度。谢谢!我想是时候习惯ArrayList了。刚刚尝试了ToString GarrayNonnulls方法,它仍然会打印整个数组并在其中添加一个额外的数字。试图找出原因,但没有线索。例如,如果我有3个相同大小的数组,我将它们的第一个元素加在一起,除以3,然后对所有元素执行此操作,并将其存储到要打印的最终整数数组中。如果我将所有数组都设置为“整数”,则会出现NullPointerException,但如果只有最后一个数组,则会打印出数组的每个元素。不知道怎么了,谢谢!我想是时候习惯ArrayList了。刚刚尝试了ToString GarrayNonnulls方法,它仍然会打印整个数组并在其中添加一个额外的数字。试图找出原因,但没有线索。例如,如果我有3个相同大小的数组,我将它们的第一个元素加在一起,除以3,然后对所有元素执行此操作,并将其存储到要打印的最终整数数组中。如果我将所有数组都设置为“整数”,则会出现NullPointerException,但如果只有最后一个数组,则会打印出数组的每个元素。不知道怎么回事。@Artur:对于大多数应用程序来说,数组的级别太低(特别是因为Java在基本类型方面有一些问题)。只有当您的应用程序应该最大限度地利用CPU时,才应该使用数组…@Artur:对于大多数应用程序来说,数组的级别太低(特别是因为Java在基本类型方面有一些问题)。只有当您的应用程序应该最大限度地利用CPU时,才应该使用阵列…解决方案很好,只是想补充一点,在存储10000个整数时,如果只使用插入和循环操作,LinkedList可能会更好,从性能上讲。@Penterekakaak:添加一个元素的摊销成本仍然是O(1),所以从大的角度讲哦,没有区别。我同意在某些情况下这很重要。解决方案是好的,只是想补充一点,在存储10000个整数时,如果只进行插入和循环操作,那么LinkedList可能会更好,从性能上看。@Penterekakaak:添加一个元素的摊余成本仍然是O(1),所以从大的角度来说,没有区别。我同意在某些情况下这很重要。