仅在值之间使用分隔符打印

ulydmbyx  于 2021-07-07  发布在  Java
关注(0)|答案(3)|浏览(199)

我有一个轻微的问题,我的代码输出,并一直在寻找这样的主题与此相同,但我没有找到任何。

while (true) {
    System.out.print("Enter a positive integer: ");    
    n = sc.nextInt();

    System.out.print(n + "! = ");
    for (int i = 1; i <= n; i++) {
        factorial = factorial * i;
        System.out.printf("%d x " , i);
    }
    System.out.println("");
}

输出必须为。每当我输入整数。e、 第五组。

Enter a positive integer: 5
5! = 1 x 2 x 3 x 4 x 5

但小问题是输出是这样的 5! = 1 x 2 x 3 x 4 x 5 x 最后一个数字上有多余的x,不应该在那里

zengzsys

zengzsys1#

替换此行:

System.out.printf("%d x " ,i);

由此:

if (i == n)
   System.out.printf("%d" ,i);
else
   System.out.printf("%d x " ,i);

这样可以避免在打印因式分解中的最后一个数字时打印“x”。

k97glaaz

k97glaaz2#

也许你可以这样做:

while (true) {
    System.out.print("Enter a positive integer: ");    
    n = sc.nextInt();

    String result = "";
    System.out.print(n + "! = ");
    for (int i = 1; i <= n; i++) {
        factorial = factorial * i;
        result += i + " x ";
    }
    System.out.println(result.substring(0, result.length() - 3);
}
jpfvwuh4

jpfvwuh43#

细木工

其他人已经回答了如何修复您的代码,但我想为您提供一个更专业的解决方案,即使用 StringJoiner .
有了它,您就可以给出一个分隔符、前缀和后缀,然后只需添加所有元素和 StringJoiner 将确保仅在中间添加分隔符。这需要你做所有的工作。代码如下:

StringJoiner sj = new StringJoiner("x ", n + "! = ", "");
for (int i = 1; i <= n; i++) {
    sj.add(Integer.toString(i));
}
System.out.println(sj);

溪流

如果您喜欢溪流:

String result = IntStream.rangeClosed(1, n)
    .mapToObj(Integer::toString)
    .collect(Collectors.joining("x ", n + "! = ", ""));
System.out.println(result);

相关问题