写了一个10进制转换程序,无意发现JAVA int 类型的范围原来是这个!
2012-03-08 15:37
281 查看
且先看我的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。
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。
相关文章推荐
- mysql插入int字段可以使用单引号包含?今天改东西无意发现时间字段成int类型了,而且update这个字段用单引号包含,于是在MySQL上测试下能运行,求解
- JAVA中int、String的类型转换
- JAVA位运算、进制转换、byte数组转换、JAVA数据类型取值范围
- Java 错误: “不兼容的类型: Object无法转换为int”
- java中long类型转换为int类型
- JAVA int String 的类型转换
- java中 string和int boolean类型值true和String String类型值"true"和boolean类型 三种相互转换
- JAVA中int、String的类型转换
- Java中定义的泛型字段到数据库中自动转换成了int类型字段 解决方案
- Java八种基本类型(byte、short、int、long、浮点数、char、boolean、基本类型转换)
- JAVA中int、String的类型相互转换
- 把一个字符串转换成int类型(Java实现)
- JAVA中int、String的类型转换
- java中数据类型转换 (int string char等)
- 自我反思——关于java中String类型和int类型的转换
- Java中int与String类型的互相转换
- Java进制转换, 数据类型, 运算符
- 实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数
- JAVA中int、String的类型转换
- JAVA中int、String的类型转换