- Java王者归来:从入门迈向高手
- 洪锦魁
- 470字
- 2025-02-17 16:14:34
6-10 将循环应用于Scanner类的输入检查
在先前章节有关输入的程序设计中,如果输入了不是预期的数据类型,将造成程序异常而终止执行,例如,程序实例ch4_43.java,若是输入一般英文字符,将造成程序异常而终止执行。

上述程序预期输入是两个整数,但是笔者输入了字符a和3y结果造成错误。为了避免这种现象产生,在Java的Scanner类下有一系列的方法可以让程序执行检查是否是输入预期的数据类型。

如果上述检查结果是真,则返回true;如果是伪,则返回false。有了这个检查后,可以在设计程序读取数据时先检查,如果是符合的数据类型才执行读取工作。这样可以避免有程序异常终止的情况发生。
程序实例ch6_13_1.java:重新设计ch4_43.java,这个程序增加了检查输入功能,如果输入不是整数,将要求重新数入。这个程序的关键点是第8~11行,这是读第一个整数,如果经过scanner.hasNextInt()检查不是整数将返回false,由于此scanner.hasNextInt()左边有!,所以整个条件结果是true将造成循环持续运作,在循环持续运作时程序第10行是将非整数数据以字符串方式读取,由于这是错误的数据所以只读取,没有其他作用。循环会持续运作,一定要读到整数数据循环才会终止。第13~16行是读第二个数据的循环,其过程相同。

执行结果
