黑马程序员技术交流社区

标题: 关于Scanner类 [打印本页]

作者: 曹文涛    时间: 2011-9-6 14:33
标题: 关于Scanner类
下面这段代码中 为什么第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 编辑 ]
作者: 黄伟龙    时间: 2011-9-6 17:31
你首先要了解scanner类的这个useDelimiter()方法是什么用的,建议看api,它是设置扫描器的界定符的,默认的界定符是空,不是空格,是空,就是说在在遇到空就说明一个扫描任务的完成,例如我这样设scan.useDelimiter("a"),那就是说明我把字母a设置为scan扫描器的界定符,这样我运行输入的时候只要输入8a,再按enter键,就会输出:输出的整数是:8,懂吗,而你却把界定符设置为\n,而\r\n这个又刚好java是换行符,这样无论你怎么输入,在按下回车键后\r这个字符都会在他检查的范围内,\r不是一个整数,结果当然不是你想要的。自己看看api实践实践就懂了。
[ 本帖最后由 黄伟龙 于 2011-09-06  17:32 编辑 ]
作者: 匿名    时间: 2011-9-6 18:48
标题: 回复 沙发 的帖子
好的 我再仔细看看




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