gpt4 book ai didi

java - 如何在 Java 中使用 printf 拆分整数

转载 作者:行者123 更新时间:2023-12-01 22:29:12 25 4
gpt4 key购买 nike

大家好,我在使用 printf 拆分用户输入数字时遇到了一些问题(我必须使用 printf)。我的问题是,当我输入数字 12345 时,它会将整数打印在五个单独的行上,并且按相反的顺序排列。所以当我输入整数 12345 时,它看起来像这样:

5

4

3

2

1

但是没有空格(我也需要那些)。我希望它打印如下:1 2 3 4 5。这是我到目前为止的代码:

public static void main(String[]args){
Scanner input = new Scanner(System.in);

int one;

System.out.print("Enter the five digit integer you would like to be split up:");
one = input.nextInt();

while (one > 0){
System.out.printf("%d%n", one % 10);
one = one /10;
}
}

最佳答案

首先,为了避免在单独的行上打印,您应该避免在 printf() 中使用 %n 格式字符。

现在,如何以正确的顺序打印数字?好吧,由于您只能使用五位数字,因此您可以执行以下操作:

    for ( int divisor = 10000; divisor >= 1; divisor /= 10 ) {
System.out.printf( "%d ", n / divisor);
n %= divisor;
}
System.out.printf( "%n" ); // Just to complete the line

(divisor/= 10divisor = divisor/10 的快捷方式,n %= divisorn 的快捷方式= n % 除数)。

因此,您首先将数字除以 10000。这将得到右侧第五位数字。然后将余数放入 n 中。这仅给出剩余的四位数字。然后循环会将你的除数减少到 1000,这将取右边第四位数字,你继续这样做,直到除数达到 1。

另一种不需要知道数字长度为 5 位但需要递归的方法是编写如下方法:

public static void printSplitNumber( int n ) {

if ( n == 0 ) {
return;
}
printSplitNumber( n / 10 );
System.out.printf( "%d ", n % 10);
}

然后从你的主程序中调用:

    printSplitNumber(n);
System.out.printf("%n"); // Again, just completing the line.

这种递归方法依赖于这样一个事实:只有在打印完所有其余数字后才打印当前数字。因此,这会导致它将其打印到其余数字的右侧,从而为您提供所需的效果。

关于java - 如何在 Java 中使用 printf 拆分整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28159668/

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