Collections.reverse方法不会反转条目

时间:2015-10-31 18:00:07

标签: java arraylist collections

我的代码应该接受来自用户的整数,然后以相反的顺序打印它们输入的任何整数。我没有错误,但是当我运行这个程序时,整数不会反向打印。有人可以帮我找出原因吗?

import java.util.*;

public class ReverseDigits {

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

        System.out.println("Please enter a whole number.");
        response = sc.next();

        reverseDigit(response);
    }

    public static void reverseDigit(String digit) {
        ArrayList al = new ArrayList();
        al.add(digit);
        Collections.reverse(al);
        System.out.println("Your number in reverse order is: " + al);
    }

}

5 个答案:

答案 0 :(得分:5)

你误解了Collections.reverse的作用。此方法会反转您提供的列表,其内容。由于您使用具有单个元素的列表调用此方法,因此结果将是相同的列表。

如果您想要反转字符串,请参阅this question

作为旁注:不要使用像ArrayList这样的原始类型,这会遇到麻烦。喜欢类型安全的方式ArrayList<String>

答案 1 :(得分:0)

试试这段代码。

ArrayList al = new ArrayList();
al.add(new StringBuffer(digit).reverse().toString());

答案 2 :(得分:0)

如果你有一个集合,它的顺序与正向相反。

如果要反转整数的字符串表示形式,可以使用StringBuilder来反转数字。

StringBuilder sb = new StringBuilder();
sb.append(digits);
sb.reverse();
System.out.println("Your number in reverse order is: "+ sb);

答案 3 :(得分:0)

如果您要撤销String,为什么要将其添加到列表中?

使用此:

         String s = sc.next();
         StringBuilder sb = new StringBuilder(s);
         System.out.println(sb.reverse());

答案 4 :(得分:0)

reverse(List<?>)方法用于反转指定列表中元素的顺序。由于集合中只有一个项目,因此逆序与初始列表相同。在尝试反转整数时,可以使用以下代码。

package com.stackoverflow.answer;

import java.util.*;

public class ReverseDigits {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Please enter a whole number: ");
        int number = scanner.nextInt();
        System.out.println(String.format("Your number in reverse order is: %d", reverse(number)));
        scanner.close();
    }

    public static int reverse(int x) {
        return reverse(x, 0);
    }

    private static int reverse(int x, int y) {
        return x == 0 ? y : reverse(x / 10, y * 10 + x % 10);
    }

}