[⼩案例]Java中Scanner对象hasNextInt⽅法使⽤中碰到的问题资源:
源码链接: 密码:8i2c
概述:
hasNextInt()⽤于判断键盘输⼊的下⼀个字符串是否为Int类型,返回boolean。
⽤法如下demo:
/**
* 测试hasNextInt
*/
public class Test2 {
public static void main(String[] args) {
//声明并获得Scanner对象
Scanner scan = new Scanner(System.in);
//提⽰⽤户输⼊信息:
System.out.print("请输⼊⼀个整数:");
//调⽤hasNextInt()
boolean flag = scan.hasNextInt();
//打印结果
System.out.println(flag);
}
}
如果输⼊的是Int类型返回true,否则返回false。
但是我们⼀般⽤于处理输⼊不匹配异常,如下demo:
public class Test3 {
/**
* hasNextInt处理输⼊不配
*/
public static void main(String[] args) {
//获得Scanner对象
Scanner scan = new Scanner(System.in);
//提⽰⽤户输⼊
System.out.print("请输⼊⼀个整数:");
//先进⾏判断是否输⼊的是否整数,然后在调⽤Scanner对象的nextInt()
//防⽌出现输⼊不匹配异常:java.util.InputMismatchException
if(scan.hasNextInt()){
//输⼊是整数时,⽤int变量num接收并打印num
int num = Int();
System.out.println(num);
}else{
//输⼊不是整数,打印出错误提⽰信息
System.out.println("错误:输⼊的不是整数!");
}
}
}
使⽤中碰到的问题:
需求:⽤户根据提⽰信息输⼊⼀组数字,输⼊0退出,求出最⼤值和最⼩,当⽤户输⼊的不是整数时提⽰⽤户重新输⼊
重点在于如何当⽤户输⼊错误时如何提⽰⽤户重新输⼊再判断直到输⼊正确
看两个demo:
demo1:
public class Test5 {
/**
* 测试hasNextInt
*/
public static void main(String[] args) {
//获得Scanner对象
Scanner scan = new Scanner(System.in);
System.out.println("请输⼊⼀个整数");
//连续调⽤两次hasNextInt()
boolean flag1 = scan.hasNextInt();
boolean flag2 = scan.hasNextInt();
}
}
连续调⽤两次hasNextInt(),但是键盘输⼊只输⼊了⼀次。
demo2:
public class Test6 {
/**
* 测试hasNextInt
*/
public static void main(String[] args) {
//获得Scanner对象
Scanner scan = new Scanner(System.in);
System.out.println("请输⼊⼀个整数");
//连续调⽤两次hasNextInt()
nextint()方法boolean flag1 = scan.hasNextInt();
//⽤String类型变量str接收
String str = ();
boolean flag2 = scan.hasNextInt();
}
}
同样是调⽤两次hasNextInt(),⽤next()接收后,键盘输⼊了两次
总结:hasNextInt()有点像缓存的机制,当调⽤hasNextInt()时,那么它的空间中会存⼊⼀个值,再次调⽤不会覆盖或增加,⽽是保持原来的值。当调⽤next()或nextInt()会将空间的值给next或nextInt,同时清空它空间中的值,从⽽可以再次接收新的值。
⼩案例:⽤户根据提⽰信息输⼊⼀组数字,输⼊0退出,求出最⼤值和最⼩,当⽤户输⼊的不是整数时提⽰⽤户重新输⼊
public class Test1 {
/**
* 输⼊⼀组整数,求取最⼤值,最⼩值,输⼊0退出
*/
public static void main(String[] args) {
/
/输⼊对象
Scanner scan = new Scanner(System.in);
int max = 0; //最⼤值,初值为0
int min = 0; //最⼩值,初值为0
int num = 0; //接收输⼊的整数
do{
String temp = ""; //⽤String类型变量temp临时保存输⼊的字符串,兼容性⽐Int类型更好
System.out.println("请输⼊⼀个整数(输⼊0退出):");
boolean flag = scan.hasNextInt();
//输⼊的是整数,直接赋值给temp
if(flag){
temp = ();
}
while(!flag){ //输⼊不是整数时
//⽤于清空hasNextInt变量
temp = ();
System.out.println("输⼊不匹配,请重新⼀个整数(输⼊0退出):");
flag = scan.hasNextInt(); //重新接收键盘输⼊的⼀个数
if(flag){ //输⼊的是整数,⽤temp保存,退出循环,否则不保存继续循环(hasNextInt空间仍然有值) temp = ();
}
}
num = Integer.parseInt(temp); //将temp转化成Int变量
//当max为初值0时,⽤输⼊的第⼀个不为0的数替换
if(max == 0 && num != 0){
max = num;
}
//当min为初值0时,⽤输⼊的第⼀个不为0的数替换
if(min == 0 && num != 0){
min = num;
}
//输⼊的数字⼤于max,更新max为输⼊的数字
if(num > max && num != 0){
max = num;
}
//输⼊的数字⼩于min,更新min为输⼊的数字
if(num < min && num != 0){
min = num;
}
}while(num != 0); //num不为0循环,即输⼊0就退出循环
System.out.println("退出输⼊!\n\n");
//当⽤户有输⼊时(max或min不为初值0),打印出结果
if(max != 0){
System.out.println("最⼤值:" + max + ",最⼩值" + min);
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论