这是原始提示:
"编写for循环以打印数组hourlyTemp的所有NUM_VALS个元素。用逗号和空格分隔元素。例如:如果hourlyTemp = {90,92,94,95},请打印: 90,92,94,95
请注意,最后一个元素后面没有逗号,空格或换行符。"
这是我的代码:
import java.util.Scanner;
public class PrintWithComma {
public static void main (String [] args) {
final int NUM_VALS = 4;
int[] hourlyTemp = new int[NUM_VALS];
int i = 0;
hourlyTemp[0] = 90;
hourlyTemp[1] = 92;
hourlyTemp[2] = 94;
hourlyTemp[3] = 95;
for (i = 0; i < NUM_VALS; i++) {
System.out.print(hourlyTemp[i] + ", ");
}
System.out.println("");
return;
}
}
我的输出是&#34; 90,92,94,95和#34;什么时候应该是&#34; 90,92,94,95和#34;
如何消除最后一个逗号和空格?
答案 0 :(得分:4)
通常,您不知道要预先打印的值的数量(但在您的情况下,它是4)。因此,打印分隔符before
而不是after
更容易。否if
s:
String sep="";
for (i = 0; i < NUM_VALS; i++) {
System.out.print(sep + hourlyTemp[i]);
sep=", ";
}
特技是 - 第一次没有什么要分开因此分隔符为空,稍后 - ", "
;
适合注册,保存分支预测器的工作。计算if (i == last_value)
也不是0。
答案 1 :(得分:2)
String delimiter = ", ";
第一种方法是使用java.util.StringJoiner
。此外,您可以指定结果字符串的前缀和后缀(例如,(delimiter, "[", "]")
)。
StringJoiner joiner = new StringJoiner(delimiter);
for (int i : hourlyTemp) joiner.add(Integer.toString(i));
System.out.println(joiner.toString());
第二种方法是使用Stream API。
Arrays.stream(hourlyTemp)
.map(i -> i.toString())
.collect(Collectors.joining(delimiter));
或者最无聊的方式:
for (i = 0; i < NUM_VALS;)
System.out.print(hourlyTemp[i] + (i++ != (NUM_VALS - 1) ? delimiter : ""));
答案 2 :(得分:1)
检查是否达到了最后一次迭代。如果不打印逗号,否则不要。
替换:
for (i = 0; i < NUM_VALS; i++) {
System.out.print(hourlyTemp[i] + ", ");
}
使用:
for (i = 0; i < NUM_VALS; i++) {
if (i == (NUM_VALS - 1)) System.out.print(hourlyTemp[i]);
else System.out.print(hourlyTemp[i] + ", ");
}
答案 3 :(得分:0)
将值打印和逗号空间打印拆分为两个单独的语句,并且不打印最后一个值的逗号空间:
System.out.print(hourlyTemp[i]);
if (i + 1 < NUM_VALS) {
System.out.print(", ");
}
或者,在循环外打印第一个值,然后在循环内首先打印逗号空间:
System.out.print(hourlyTemp[0]);
for (int i = 1; i < NUM_VALS; ++i) {
System.out.print(", " + hourlyTemp[i]);
}
答案 4 :(得分:0)
检查i
是否已达到最后一次迭代。
for (i = 0; i < NUM_VALS; i++) {
if (i == (NUM_VALS - 1))
System.out.print(hourlyTemp[i]);
else
System.out.print(hourlyTemp[i] + ", ");
}
答案 5 :(得分:0)
例如,您可以设置条件,并在到达结尾时打印空白区域。
for(int i=0; i<10; i++) {
System.out.print(i + (i < 10-1 ? ", " : ""));
}