gpt4 book ai didi

java - 如何格式化这个输出?

转载 作者:行者123 更新时间:2023-12-01 14:16:40 24 4
gpt4 key购买 nike

我创建了一个方法,它应该在输入任何数字时返回一个不断增长的数字列表。例如:

输入:5

预期输出:[1, 2 2, 3 3 3, 4 4 4 4, 5 5 5 5 5]

当前输出:[1 , 2 2 , 3 3 3 , 4 4 4 4 , 5 5 5 5 5 ]

输入:2

预期输出:[1, 2 2]

当前输出:[1 , 2 2 ]

如何删除空格?这是我的代码:

ArrayList < String > maxarray = new ArrayList < String > ();
int i, j;
String num = "";

for (i = 1; i <= max; i++) {
num = "";
for (j = 1; j <= i; j++) {
num = num + i + " ";
}
//System.out.print(i);
maxarray.add(num);
}
return maxarray;

我试过:num= num.replace("","");num = num.replace("", "");但是,它们似乎不起作用。如果我尝试将其转换为字符串,则会得到以下输出:1 2 2 3 3 3

请帮帮我

最佳答案

简单而短视的解决方案:只需在将字符串添加到 ArrayList 之前修剪字符串:

        maxarray.add(num.trim());

通过此更改,输出为:

[1, 2 2, 3 3 3, 4 4 4 4, 5 5 5 5 5]

trim() 移除尾随空格(和前导空格,如果有的话),但不移除数字之间的空格。

从一开始就产生正确的输出:但是,与其产生不太正确的输出然后再更正它,不如从一开始就产生正确的输出最终更容易混淆。也就是说,最后一个数字后没有空格。这也是 Berto99 的答案所做的。我首选的做法是:从内部循环中取出一次迭代,并避免在那里添加空格。

    for (i = 1; i <= max; i++) {
num = "";
for (j = 1; j < i; j++) { // stop one number before i
num = num + i + " ";
}
num = num + i; // add no space here
maxarray.add(num);
}

输出仍然是:

[1, 2 2, 3 3 3, 4 4 4 4, 5 5 5 5 5]

我发现这种方式比 Berto99 在答案中带有额外 if 语句的版本更容易阅读。

为了精确起见:maxarray 不是一个整型数组,它是一个字符串的ArrayList。我们需要修剪的不是 ArrayList,而是其中的每个字符串。

PS Stream 版本: 对于了解并喜欢流媒体的读者,这里有一个流媒体版本。如果您还不想了解流,请忽略。

    List<String> maxarray = IntStream.rangeClosed(1, max)
.mapToObj(i -> IntStream.rangeClosed(1, i)
.mapToObj(j -> String.valueOf(i))
.collect(Collectors.joining(" ")))
.collect(Collectors.toList());

一个方便的事情是 Collectors.joining("") 在数字之间放置空格,而不在第一个之前或最后一个之后放置任何空格,这解决了所问的问题。

关于java - 如何格式化这个输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63083340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com