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

如何在Java中使用printf拆分整数,java,integer,printf,java.util.scanner,modulus,Java,Integer,Printf,Java.util.scanner,Modulus,大家好,我在使用printf拆分用户输入号码时遇到了一些问题(我必须使用printf)。我的问题是,当我输入数字12345时,它会在五行上打印出整数,而且它们的顺序也是相反的。当我输入整数12345时,它看起来是这样的: 五, 四, 三, 二, 一, 但是没有空间(我也需要这些)。我希望它像这样打印:123445。 以下是我目前掌握的代码: public static void main(String[]args){ Scanner input = new Scanner(System.

大家好,我在使用printf拆分用户输入号码时遇到了一些问题(我必须使用printf)。我的问题是,当我输入数字12345时,它会在五行上打印出整数,而且它们的顺序也是相反的。当我输入整数12345时,它看起来是这样的:

五,

四,

三,

二,

一,

但是没有空间(我也需要这些)。我希望它像这样打印:123445。 以下是我目前掌握的代码:

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;
}
}

这种方法使用子字符串方法,而不是通过数学方法处理int值

int one;

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

String x = Integer.toString(one);
for(int i = 0; i < x.length() - 1; i++)
{ 
  // On last digit in number
  if(i + 1 == x.length())
  {
    System.out.printf("%s ", x.substring(x.length()));
  }
  else
  {
    System.out.printf("%s ", x.substring(i, i + 1));
   }
}
int-one;
System.out.print(“输入要拆分的五位数整数:”;
一=input.nextInt();
字符串x=整数。toString(一);
对于(int i=0;i

由于@Jerry101的评论,简化了printf语句

此方法使用子字符串方法,而不是数学上操纵int值

int one;

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

String x = Integer.toString(one);
for(int i = 0; i < x.length() - 1; i++)
{ 
  // On last digit in number
  if(i + 1 == x.length())
  {
    System.out.printf("%s ", x.substring(x.length()));
  }
  else
  {
    System.out.printf("%s ", x.substring(i, i + 1));
   }
}
int-one;
System.out.print(“输入要拆分的五位数整数:”;
一=input.nextInt();
字符串x=整数。toString(一);
对于(int i=0;i

由于@Jerry101的评论,简化了printf语句

此方法使用子字符串方法,而不是数学上操纵int值

int one;

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

String x = Integer.toString(one);
for(int i = 0; i < x.length() - 1; i++)
{ 
  // On last digit in number
  if(i + 1 == x.length())
  {
    System.out.printf("%s ", x.substring(x.length()));
  }
  else
  {
    System.out.printf("%s ", x.substring(i, i + 1));
   }
}
int-one;
System.out.print(“输入要拆分的五位数整数:”;
一=input.nextInt();
字符串x=整数。toString(一);
对于(int i=0;i

由于@Jerry101的评论,简化了printf语句

此方法使用子字符串方法,而不是数学上操纵int值

int one;

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

String x = Integer.toString(one);
for(int i = 0; i < x.length() - 1; i++)
{ 
  // On last digit in number
  if(i + 1 == x.length())
  {
    System.out.printf("%s ", x.substring(x.length()));
  }
  else
  {
    System.out.printf("%s ", x.substring(i, i + 1));
   }
}
int-one;
System.out.print(“输入要拆分的五位数整数:”;
一=input.nextInt();
字符串x=整数。toString(一);
对于(int i=0;i

由于@Jerry101的评论,简化了printf语句首先,为了避免在单独的行上打印,您应该避免在
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
  public void printDigits(String chars) {
    for(int i = 0; i < chars.length(); i++) {
         System.out.printf("%c ", chars.charAt(i));
    }
  }
divisior/=10
divisior=divisior/10
的快捷方式,
n%=divisior
n=n%divisior
的快捷方式)

你先把这个数字除以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.

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

首先,为了避免在单独的行上打印,应避免在
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
  public void printDigits(String chars) {
    for(int i = 0; i < chars.length(); i++) {
         System.out.printf("%c ", chars.charAt(i));
    }
  }
divisior/=10
divisior=divisior/10
的快捷方式,
n%=divisior
n=n%divisior
的快捷方式)

你先把这个数字除以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.

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

首先,为了避免在单独的行上打印,应避免在
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
  public void printDigits(String chars) {
    for(int i = 0; i < chars.length(); i++) {
         System.out.printf("%c ", chars.charAt(i));
    }
  }
divisior/=10
divisior=divisior/10
的快捷方式,
n%=divisior
n=n%divisior
的快捷方式)

你先把这个数字除以10000。这将给出从右边开始的第五个数字。然后取剩余部分并将其放入
n
。这只给你剩下的四位数。然后循环会将除数减少到1000,这意味着