在不使用库的情况下反转数字

Reverse numerical numbers without use of libraries

import java.util.Scanner;
public class Main
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);

        for (int i = 0; i < 4; i++)
        {
            int number = input.nextInt();

            int reverse = 0;
            while (number != 0)
            {
                reverse = reverse * 10;
                reverse = reverse + number % 10;
                number = number / 10;
            }
            System.out.println(reverse);
       }
   }
}

所有数字都可以很好地反转,但我在反转以零结尾的数字时遇到问题,例如像 10000 这样的数字,而不是反转结果 00001 它给出的结果是 1 这是不是问题想要的是有一种使用整数或字符串的方法是最好和更简单的方法吗?谢谢

尝试字符串概念的反转

    String s ="10000";
    String n= "";
    for(int i=0; i<s.length(); i++){
      n = s.charAt(i) + n;
    }
    System.out.println(n);

你也可以用 StringBuilder 来解决。它已经有一个名为 reverse:

的方法
public String reverseInput(int number) {
    String s = Integer.toString(number);
    return new StringBuilder(s).reverse().toString();
}

0 本身外,不能有以 0 开头的整数。因此,您将不得不使用字符串或其他数据结构。

您可以创建一个变量length,并使用System.out.printf格式化输出。

使用%0 + length + d,它会在左边添加0,使输出有这个length

import java.util.Scanner;
public class Main
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);

        for (int i = 0; i < 4; i++)
        {
            int number = input.nextInt();

            int reverse = 0;
            int length = String.valueOf(number).length();
            while (number != 0)
            {
                reverse = reverse * 10;
                reverse = reverse + number % 10;
                number = number / 10;
            }
            System.out.printf("%0" + length + "d", reverse);
       }
   }
}