11-01 Java语言基础(Scanner类)
发布日期:2021-05-06 23:59:30 浏览次数:11 分类:原创文章

本文共 1355 字,大约阅读时间需要 4 分钟。

Scanner类概述

Scanner的构造方法:

Scanner(InputStream source)

System类下有一个静态的字段:

public static final InputStream in;

这是标准的输入流,对应着键盘录入。

Scanner类使用

  • hasNextxxx():判断是否还有下一个输入项,其中xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略xxx。
  • nextxxx():获取下一个输入项。xxx的含义和上个方法中的xxx相同,默认情况下,Scanner使用空格,回车作为分隔符。

代码:

package com.heima.scanner;import java.util.Scanner;public class Demo1_Scanner {   	public static void main(String[] args) {   		Scanner in = new Scanner(System.in);  //键盘录入		if(in.hasNextInt()) {   			int i = in.nextInt();    //键盘录入整数存储在i中			System.out.println(i);		}else {   			System.out.println("输入类型错误");		}	}}

nextInt()和nextLine()连用的问题及解决方案

package com.heima.scanner;import java.util.Scanner;public class Demo2_Scanner {   	public static void main(String[] args) {   				Scanner in = new Scanner(System.in);				System.out.println("请输入一个整数:");		int i = in.nextInt();				System.out.println("请输入一个字符串:");		String str = in.nextLine();				System.out.println("i = " + i + ", str = " + str);	}}

输出:

请输入一个整数:12请输入一个字符串:i = 12, str = 

分析:

nextInt()是键盘录入整数的方法,当我们录入10并回车时,其实在键盘上录入的是10\r\n。nextInt()只获取10就结束了。nextLine()是键盘录入字符串的方法,会获取一整行,遇到\r\n就结束了。所以nextLine()什么也没获取到就结束了。其实,next()、nextInt()、nextDouble()等与nextLine()连用时都会存在这个问题。

解决办法:

1、所有的输入都使用nextLine(),然后分别转化成它们本来的类型2、如果nextLine()获取的是不带空格的字符串,使用next()即可。next()输入在得到有效字符前会忽视掉空格和回车。3、如果获得的字符串有空格,那么在上一次的nextInt()之后再加一个nextLine()即可。
上一篇:11-02 Java语言基础(String类(1))
下一篇:10-03 Java语言基础(API概述和Object类)

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月02日 10时46分28秒