写了一个10进制转换程序,无意发现JAVA int 类型的范围原来是这个!

且先看我的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。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值