`
失落丶神话
  • 浏览: 7146 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

[小案例]Java中Scanner对象hasNextInt方法使用中碰到的问题

    博客分类:
  • java
阅读更多

资源:

        源码链接:http://pan.baidu.com/s/1pLjeO6v 密码: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 = scan.nextInt();
			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()
		boolean flag1 = scan.hasNextInt();
		//用String类型变量str接收
		String str = scan.next();
		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 = scan.next();
			}		
			
			while(!flag){ //输入不是整数时
				//用于清空hasNextInt变量
				temp = scan.next();
				
				System.out.println("输入不匹配,请重新一个整数(输入0退出):");
				flag = scan.hasNextInt(); //重新接收键盘输入的一个数
				if(flag){ //输入的是整数,用temp保存,退出循环,否则不保存继续循环(hasNextInt空间仍然有值)
					temp = scan.next();
				}
			}
			
			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);
		}
	}
}
 
分享到:
评论

相关推荐

    Scanner+hasNextInt习题

    `Scanner`类为Java中的输入处理提供了一种灵活的方式。它可以从不同的源读取数据,如文本文件、控制台输入或网络流等。`Scanner`类的主要优势在于它可以自动根据输入的数据类型转换数据,从而简化了程序员的工作量。...

    burpsuite插件之Java Deserialization Scanner使用方法1

    Java Deserialization Scanner 是一款针对Java反序列化漏洞的检测和利用工具,它是Burp Suite中的一个插件。这款插件的目的是帮助安全研究人员检测应用程序中可能存在的Java反序列化漏洞,这些漏洞可能导致远程代码...

    java中Scanner类的接收方法

    在Java编程语言中,`Scanner`类是Java.util包下的一个重要的输入处理工具,它用于从各种源(如系统输入流、文件、字符串)读取基本类型的数据和字符串。`Scanner`类提供了丰富的接收方法来方便程序员进行输入操作。...

    Java中Scanner类的用法

    ### Java中Scanner类的用法 #### 一、概述 `Scanner`类是Java标准库中的一个类,属于`java.util`包的一部分。它在Java 5.0版本被引入,目的是为了简化输入输出控制的过程,相较于传统的输入输出流控制(如`...

    java中Scanner类nextLine()和next()的区别和使用方法

    Java 中 Scanner 类 nextLine() 和 next() 的区别和使用方法 Java 中的 Scanner 类提供了多种方法来读取输入数据,其中 nextLine() 和 next() 是两个常用的方法,但它们之间有着重要的区别。 next() 方法 next() ...

    Java中Scanner用法.doc

    ### Java中Scanner类的用法详解 #### 一、引言 `Scanner`类作为Java SDK 1.5中引入的新特性,为开发者提供了一种简单直观的方式来读取用户输入和解析文本文件中的数据。相比于之前的`StringTokenizer`和`Matcher`类...

    Java Scanner、File、PrintWriter使用实例

    Java Scanner File PrintWriter使用实例

    Java基础之Scanner键盘录入.docx

    Java 基础之 Scanner 键盘录入 Java 中的 Scanner 键盘录入是 Java 前期学习中非常...使用 Scanner 需要导入包,创建 Scanner 对象,并使用其提供的方法来读取用户的输入。最后,需要关闭 Scanner,以释放系统资源。

    在Java中,Scanner类.zip

    总结来说,Java中的`Scanner`类是一个强大且易用的工具,它简化了从各种输入源获取数据的过程,尤其适合处理简单的用户输入需求。通过熟练掌握`Scanner`类的使用,开发者能够更好地实现与用户的交互,提高程序的可用...

    java Scanner 的用法

    ### Java Scanner 类的使用详解 #### 一、简介与应用场景 `java.util.Scanner` 是 Java SDK 1.5 版本引入的一个类,用于简化文本扫描任务,它能够解析基本类型(如 `int`, `double`)以及字符串类型的数据。在进行...

    Scanner 学习代码demo

    在这个例子中,我们首先导入了 Scanner 类,然后在 main 方法中创建了一个 Scanner 对象。我们使用 System.out.println 方法来提示用户输入,然后使用 Scanner 的 next 和 nextInt 方法来获取用户输入的字符串和整数...

    Java SE程序 Scanner类

    Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序 Scanner类Java SE程序...

    Java中Scanner类的用法.doc

    例如,读取文本文件 hrinfo.txt 中的内容,可以使用 Scanner 类来读取每一行数据,然后使用 parseline() 方法来解析该行数据。 Scanner 类的优点是可以灵活地读取输入数据,且可以使用正则表达式来匹配输入数据的...

    java输入语句scanner 使用方式

    - **读取多个值**:可以在同一行中使用空格分隔多个值,并使用不同的方法来读取它们。 ```java int a = scanner.nextInt(); double b = scanner.nextDouble(); String c = scanner.next(); ``` ##### 4. 关闭 ...

    java Scanner类的使用(csdn)————程序.pdf

    Java Scanner 类是 Java 5 中的一个新特征,用于实现程序与人的交互,我们可以通过 Scanner 类来获取用户的输入。Scanner 类位于 java.util 包中,可以通过创建一个扫描对象来接收键盘输入。 创建扫描对象的基础...

    Java面向对象编程练习题.pdf

    在 main 方法中,使用 Scanner 对象读取用户输入的数字,并比较与成员变量 v 的值,输出对应的结果。这展示了 Java 中类的成员变量的使用和访问。 知识点: * 类的成员变量 * 构造方法 * Scanner 对象的使用 * ...

Global site tag (gtag.js) - Google Analytics