Java编程 使用递归方法将一个整数的各个数位的数字逆置,例如输入1997,输出显示7991。

如题所述

Java源程序:

import java.util.Scanner;

public class Test20 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num;
System.out.print("请输入一个整数:");
num = scan.nextInt();
System.out.print("逆置后的整数 : ");
reverse(num);
}

//递归方法
public static void reverse(int num){
if(num <= 0){
return;
}
System.out.print(num%10);
reverse(num/10);
}
}

运行测试:
请输入一个整数:1997
逆置后的整数 : 7991

请输入一个整数:1234
逆置后的整数 : 4321追问

超过十个数字就溢出了.....

追答

废话,无论是int型数还是long型数都是有范围的。
下面这样就不有会有溢出问题了:

import java.util.Scanner;

public class Test20 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String num;
System.out.print("请输入一个整数:");
num = scan.next();
System.out.print("逆置后的整数 : ");
reverse(num);
}

public static void reverse(String num){
if(num.length() <= 0){
return;
}
System.out.print(num.substring(num.length()-1));
reverse(num.substring(0, num.length()-1));
}
}

但是不确保输入的有效性。

追问

如果用try-catch-finally处理异常是不是可以把输入有效性也写进去........

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-30
import java.util.Scanner;

public class Demotest {
public static void main(String[] args) {
System.out.println("输出一个你要转换的数字安回车:");
Scanner reader = new Scanner(System.in);
int a=reader.nextInt();
String str = String.valueOf(a);
char[] des = new char[str.length()];
str.getChars(0, str.length(), des, 0);
for (int i = des.length - 1; i >= 0; i--) {
System.out.print((des[i]));
}
}

}
相信你会喜欢我的这个的,哈哈。追问

超过十个数字就溢出了.....

追答

哦。哈哈。那你要多少个数字呢?
import java.util.Scanner;

public class Demotest {
public static void main(String[] args) {
System.out.println("输出一个你要转换的数字安回车:");
Scanner reader = new Scanner(System.in);
String str=reader.next();
//String str = String.valueOf(a);
char[] des = new char[str.length()];
str.getChars(0, str.length(), des, 0);
for (int i = des.length - 1; i >= 0; i--) {
System.out.print((des[i]));
}

}

}
这个就可以了

第2个回答  2011-05-30
public Class Test {
public static void main(String[] args){
int i = 1997;
String str = String.valueOf(i);
char[] des = new char[str.length];
str.getChars(0, 4, des, 0);
for (int i = des.length - 1; i >= 0; i--) {
System.out.print((des[i]));
}
}
}追问

1997只是一个例子啊....