黑马程序员技术交流社区

标题: 求原因 [打印本页]

作者: yangyinhui    时间: 2013-4-3 19:25
标题: 求原因
本帖最后由 yangyinhui 于 2013-4-4 17:35 编辑

   public static void main(String[] args) {
               
                Scanner scanner=new Scanner(System.in);
                //int i= scanner.nextInt();输入2321312321432134会抛异常
                String line=scanner.nextLine();//输入2321312321432134不会抛异常
                scanner.close();
                //System.out.println(i);
                System.out.println(line);
}}
为什么一个会抛异常一个不会,输入的都是很大的数字为什么用String就不会抛异常?新手求解释?
作者: 黑马-郑玉元    时间: 2013-4-3 19:32
一个是字符串一个是int型的数据!.nextInt()是从键盘输入一个int型数据,它当然是有范围的,nextLine()是从键盘读取一行字符串!
作者: 谢达    时间: 2013-4-3 19:37
//int i= scanner.nextInt();输入2321312321432134会抛异常.这里调用netInt()输入的超过了int范围-2147483648~2147483647,所以会报异常

作者: ㄨ____陌生    时间: 2013-4-3 19:54
int类型是有范围控制的, int为一种数据类型,范围[-2^31 , 2^31 -1] 即 [-2147483648,2147483647]。会抛出异常
String 是字符串 不管多大的数字都可以看成字符串,不会抛出异常,定义变量。
作者: 庞立森    时间: 2013-4-3 19:58
第一,int的数值类型没有那么大,你输入那么多数字肯定不对
第二,你用String标示的,你输入的就不是int类型的数字了,而是字符串了,你随便输入多少都可以
你不要以为都是阿拉伯数字就一定就是int类型的
作者: yangyinhui    时间: 2013-4-3 20:00
明白了,原来是nextLine()是从键盘读取一行字符串,谢谢
作者: 打工人    时间: 2013-4-4 16:35
若还有问题,继续追问; 没有的话,尽量及时将帖子分类改成【已解决】~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2