我需要能够在java中组合其余的数组来改变它的长度。
我所知道的等价物是Python中的一个列表,您可以在其中输入list[1:]
以显示列表的其余部分。我如何在String formattedOutput = (user+" : "+message+parts[3:]);
进行此操作,同时在列表的每个部分之间添加空格?
答案 0 :(得分:1)
好吧,考虑到语法并不真正允许,你自己需要从给定的索引迭代到数组的末尾,然后进行追加。考虑到您正在尝试创建所有元素的String,您应该使用StringBuffer
而不仅仅是串联。以下示例应该有效:
StringBuffer sb = new StringBuffer();
sb.append(user);
sb.append(" : ");
for(int i = 3; i < parts.length; i++)
{
sb.append(parts[i]);
if(i < parts.length-1) //if you don't want a space after the last part
{
sb.append(" ");
}
}
String formattedOutput = sb.toString();
System.out.println(formattedOutput);
当然,您可以创建自己的合并函数,它采用如下索引:
StringBuffer sb = new StringBuffer();
sb.append(user);
sb.append(" : ");
appendFromArray(sb, parts, 3);
String formattedOutput = sb.toString();
System.out.println(formattedOutput);
}
private void appendFromArray(StringBuffer sb, String[] array, int index)
{
for(int i = index; i < array.length; i++)
{
sb.append(array[i]);
if(i < array.length-1) //if you don't want a space after the last part
{
sb.append(" ");
}
}
}
答案 1 :(得分:1)
如果parts数组是一个String数组,你可以创建一个执行它的方法。例如:
private String stringFromArray(Array array, int start){
String result = "";
for(int i = start; i < array.length; i++)
result += (" " + array[i]); //Make sure you have a white space before the array[i];
return result;
}
然后将其称为
String formattedOutput = (user+" : "+ message + stringFromArray(parts, 3));
答案 2 :(得分:0)
如果您使用小型阵列或性能不是问题,则可以使用arraycopy()
,然后使用Arrays.toString()
。我可能不会在生产环境中推荐这个,但对于某些测试可能没问题:
int[] array = { 1, 2, 3, 4, 5 };
int size = 3;
int startIdx = 2;
int[] arrayPart = new int[size];
System.arraycopy(array, startIdx, arrayPart, 0, size);
System.out.println("Message: " + Arrays.toString(arrayPart).replaceAll("[\\[\\]]", ""));
结果:
消息:3,4,5