A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹文涛 黑马帝   /  2011-9-6 14:33  /  2070 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面这段代码中 为什么第7行被注释掉才能正常运行?[code=java]import java.util.* ;
public class ScannerDemo01{
        public static void main(String args[]){
                Scanner scan = new Scanner(System.in);
                int i = 0 ;
                float f = 0.0f;
//                scan.useDelimiter("\n");
                System.out.print("请输入:");
                if (scan.hasNextInt()){
                        i = scan.nextInt();
                        System.out.println("输入的是整数:" + i);
                        System.exit(1);
                }else{
                        System.out.println("输入的不是整数");
                }
                if (scan.hasNextFloat()){
                        f = scan.nextFloat();
                        System.out.println("输入的是小整" + f);
                        System.exit(1);
                }else{
                        System.out.println("输入的不是小数");
                }
        }
}[/code]
[ 本帖最后由 曹文涛 于 2011-09-06  14:54 编辑 ]

2 个回复

倒序浏览
你首先要了解scanner类的这个useDelimiter()方法是什么用的,建议看api,它是设置扫描器的界定符的,默认的界定符是空,不是空格,是空,就是说在在遇到空就说明一个扫描任务的完成,例如我这样设scan.useDelimiter("a"),那就是说明我把字母a设置为scan扫描器的界定符,这样我运行输入的时候只要输入8a,再按enter键,就会输出:输出的整数是:8,懂吗,而你却把界定符设置为\n,而\r\n这个又刚好java是换行符,这样无论你怎么输入,在按下回车键后\r这个字符都会在他检查的范围内,\r不是一个整数,结果当然不是你想要的。自己看看api实践实践就懂了。
[ 本帖最后由 黄伟龙 于 2011-09-06  17:32 编辑 ]

评分

参与人数 1技术分 +2 收起 理由
wangfayin + 2

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-6 18:48:08
藤椅

回复 沙发 的帖子

好的 我再仔细看看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马