所以我需要打印出一个整数数组。问题是当用户输入要处理和排序的号码时,我不知道用户输入了多少号码。唯一的规则是用户只能输入少于10000个数字。
所以我创建了一个可以容纳10000个数字的数组,但是如果用户输入的数字少于10000个,那么Array.toString()
函数会输出所有内容,甚至是空格。
有没有办法绕过它,或者是否有任何其他方法可以在一行中输出数组,将输出格式化为如下所示:[1, 2, 3, 4, 5, 6]
非常感谢!
答案 0 :(得分:4)
将用户的输入存储在ArrayList
中会更容易,然后只需打印myArryList.toString()
。
答案 1 :(得分:2)
如果你想在Java中使用动态数组,最好的方法是学习如何使用列表:
List<Integer> integers = new ArrayList<Integer>();
它只会输入您输入的数字。
如果您不想重写您的程序,这也是解决方案:
Integer[]x = new Integer[50];
List<Integer> integers = new ArrayList<Integer>();
integers = new ArrayList<Integer>(Arrays.asList(x));
答案 2 :(得分:2)
ArrayList<T>
(可选<T>
为泛型)。如果有更多输入可用,则动态添加更多内存的数组。将元素添加到此类列表的摊销成本为 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();
}
使用您想要的任何类型的数组调用该方法。
<强>实施例强>
String[] names = new String[] {"Alice",null,"Charly","David",null,null};
System.out.println(toStringArrayNonNulls(names));
Integer[] primes = new Integer[] {2,3,null,null,11};
System.out.println(toStringArrayNonNulls(primes));
Object[] namesAndPrimes = new Integer[] {"Alice",2,null,3,null,"Charly",null,11};
System.out.println(toStringArrayNonNulls(namesAndPrimes));