且先看我的10进制转换成任意16以内进制代码:
package newpackage;
import java.util.*;
/**
*
* @author Administrator
*/
public class ShuZiJinZhiZhuanHuan
{
public static void main(String[]args)
{
Scanner in=new Scanner(System.in);
System.out.println("输入要转换的十进制数字n与要转换成的进制b:");
int n=in.nextInt();
int b=in.nextInt();
System.out.println("您输入的十进制数字是"+n+",转成"+b+"进制结果为"+baseString(n,b));
}
public static String baseString(int n,int b)
{
String str="",digitChar="0123456789abc";
if(n==0)
return "";
else
{
str=baseString(n/b,b);
return str+digitChar.charAt(n%b);
}
}
}
运行结果1:
run-single:
输入要转换的十进制数字n与要转换成的进制b:
2147483647 2
您输入的十进制数字是2147483647,转成2进制结果为1111111111111111111111111111111
BUILD SUCCESSFUL (total time: 46 seconds)
运行结果2:
run-single:
输入要转换的十进制数字n与要转换成的进制b:
2147483648 2
Exception in thread "main" java.util.InputMismatchException: For input string: "2147483648"
at java.util.Scanner.nextInt(Scanner.java:2097)
at java.util.Scanner.nextInt(Scanner.java:2050)
at newpackage.ShuZiJinZhiZhuanHuan.main(ShuZiJinZhiZhuanHuan.java:18)
结果2出现异常。。。
我们知道2的31次方是2147483648,以上的程序我用的是int型。故java int型最大值为2147483647即2^31-1。