不使用库

时间:2018-03-24 17:38:31

标签: java reverse

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这不是什么问题是有没有办法使用整数或字符串将是最好和更容易的方法?谢谢

3 个答案:

答案 0 :(得分:0)

尝试颠倒字符串概念

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

答案 1 :(得分: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);
       }
   }
}

答案 2 :(得分:-1)

您也可以使用StringBuilder解决此问题。它已经有一个名为reverse的方法:

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

除了0本身之外,您不能以0开头的整数。因此,您必须使用字符串或其他数据结构。