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