gpt4 book ai didi

java - 变量结果多于两个且结果末尾为 "and"如何显示逗号?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:19:15 24 4
gpt4 key购买 nike

一个代码,给出用户给定数字 (x,y) 中 5 的倍数。如果没有要显示的,打印“NONE”。如果有两个要显示,用“and”隔开。如果有两个或两个以上要显示,则用逗号和末尾的“和”分隔。

System.out.print("Enter first number: ");
int x = new Scanner (System.in).nextInt();
System.out.print("Enter last number: ");
int y = new Scanner (System.in).nextInt();
System.out.print("The multiples of 5 from "+x+ " to " +y+ " : ");

for (;x<=y; x++) {
if(x%5==0) {
System.out.printf("%,d ",x);
}
}

示例输出:

Enter number: 1
Enter number: 4
The multiples of 5 from 1 to 4: NONE

示例输出:

Enter number: 8
Enter number: 12
The multiples of 5 from 8 to 12: 10

示例输出:

Enter number: 1
Enter number: 17
The multiples of 5 from 1 to 17: 5, 10, and 15.

最佳答案

您在 printf 中使用的逗号不是一个简单的字符,它是模式 %,d 的一部分。

Format String Syntax

  • If the ',' ('\u002c') flag is given, then the locale-specific grouping separator is inserted by scanning the integer part of the string from least significant to most significant digits and inserting a separator at intervals defined by the locale's grouping size.

您需要将其移出模式 %d 并添加条件以删除第一个匹配数字的逗号。

for (int i = 0; x <= y; x++) {
if (x % 5 == 0) {
System.out.printf("%s%d", (i++ == 0 ? "" : ","), x);
}
}

或者你可以用花哨的方式来写

String result = IntStream.rangeClosed(x, y)
.filter(i -> i % 5 == 0)
.mapToObj(Integer::toString)
.collect(Collectors.joining(","));
System.out.println(result);

我展示了两个使用 "," 作为唯一分隔符的工作示例。对于三个定界符("、""、""和 "),它变得有点棘手。在极少数情况下,switch 语句会派上用场。

final List<String> values = IntStream.rangeClosed(x, y)
.filter(i -> i % 5 == 0)
.mapToObj(Integer::toString)
.collect(Collectors.toList());

switch (values.size()) {
case 0:
System.out.println("NONE");
break;
case 1:
System.out.println(values.get(0));
break;
case 2:
System.out.println(String.join(" and ", values));
break;
default:
final String last = values.remove(values.size() - 1);
System.out.println(String.join(", ", values) + ", and " + last);
}

关于java - 变量结果多于两个且结果末尾为 "and"如何显示逗号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58097069/

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