如何从system.out.printf java中修剪空格

s71maibg  于 2021-07-03  发布在  Java
关注(0)|答案(4)|浏览(477)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

上个月关门了。
改进这个问题
您能得到一个建议吗,如何在java中修剪system.out.printf中的空间:

public class Part3
{
    public static void main(String[] args)
    {
        int N = 10;
        int ct=0,n=0,i=1,j=1;
        while(n<N)
        {
            j=1;
            ct=0;
            while(j<=i)
            {
                if(i%j==0)
                    ct++;
                j++;
            }
            if(ct==2)
            {
                System.out.printf("%d%s", i);
                n++;
            }
            i++;
        }
    }

}

当前结果是最后一个空格: 2 3 5 7 11 13 17 19 23 29 预期结果没有最后空格: 2 3 5 7 11 13 17 19 23 29 致以最诚挚的问候

3lxsmp7m

3lxsmp7m1#

拆下 %s 并在每个数字之后执行检查,以测试是否在循环的最后一次迭代中。如果您不在上一次迭代中,请打印一个空格。

if(ct==2)
    {
        System.out.printf("%d%s", i);
        n++;
        if (n != N) 
             {
                 System.out.print(" ");
             }
    }
x7rlezfr

x7rlezfr2#

我更喜欢“在除第一个之外的所有对象之前添加分隔符”的方法。
在大纲中,并不是真的试图将其Map到您的具体案例,它是这样的:

String sep = "";
  for (*some loop or other*) {
       System.out.printf("%s%d", sep, nextNum);
       sep = " ";
  }

我发现这比编写条件来确定这是否是第一个(或最后一个)元素更紧凑。

u4dcyp6a

u4dcyp6a3#

在内部附加以下条件 if(ct==2) { :

if(n==N-1)
    System.out.print(i);
else
    System.out.printf("%d ", i);
bvhaajcl

bvhaajcl4#

当打印分开的输出时,例如像这里这样分开的空间,并不总是容易确定最后一个值何时打印。在这里,因为您正打印10个值,但是如果代码打印的素数小于120呢?在打印最后一个素数(113)时,我们不知道是否还有更多的素数。
因此,更容易在值之前打印分隔符,并抑制第一个分隔符:

boolean first = true;

while (...) { // some loop here
    // some logic here
    if (...) { // decide if we need to print

        // print values separated by spaces
        if (first) {
            first = false;
        } else {
            System.out.print(' '); // print separator
        }
        System.out.print(value);

    }
}

而不是使用 boolean ,您可以使用 String 变量来携带分隔符,并最初使其成为空字符串。代码更简洁,但这是否是一个更好的解决方案是一个意见问题:

String sep = ""; // no separator before first value

while (...) { // some loop here
    // some logic here
    if (...) { // decide if we need to print

        // print values separated by spaces
        System.out.print(sep + value);
        sep = " ";

    }
}

相关问题