如何使用Java更有效地反转数字

时间:2015-03-09 17:32:22

标签: java

我写了一些代码来反转一个数字如下:

        long num = 123456789;

        char[] arr = String.valueOf(num).toCharArray();
        List<Character> characterList = new ArrayList<Character>();
        for (char c : arr) {
            characterList.add(c);
        }
        Collections.reverse(characterList);

        for (Character c : characterList) {
            System.out.println(c);
        }

输出:

9
8
7
6
5
4
3
2
1

有人能告诉我用Java实现这个目标的更有效方法吗?

修改
事实上,关于这个问题的第一个指南是向后打印它们,请忽略这种方式。

4 个答案:

答案 0 :(得分:3)

为什么要使用字符?您可以使用整数运算直接执行此操作:

public static void main(String[] args) {
    long num = 123456789;

    while (num != 0) {
        System.out.println(num % 10);
        num = num / 10;
    }
}

输出:

9
8
7
6
5
4
3
2
1

这几乎是Long.toString()does internally,所以它应该比使用String更有效。

答案 1 :(得分:2)

你只能使用一个循环:

long num = 123456789;

char[] arr = String.valueOf(num).toCharArray();
for(int i = arr.length - 1; i >= 0; i--) {
    System.out.println(arr[i]);
}

答案 2 :(得分:2)

如果通过&#34;效率更高&#34;你的意思是更少的线,你可以使用:

char[] reversed = new StringBuilder(String.valueOf(num))
                             .reverse().toString().toCharArray();

答案 3 :(得分:1)

最简单的方法:

long num = 123456789;

StringBuilder sb=new StringBuilder(num+"");

System.out.println(""+sb.reverse());