前言:
Java的输入不像 C 等其他语言那样的简便的输入 scanf
比如输入一个整数型的数 scanf("%d",&a); 这篇文章讲介绍Java怎么从键盘输入内容以及Scanner类的其他用法


Scanner类简介

java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。接下来,我们将演示一个最简单的数据输入,并通过Scanner类的next ()与 nextLine() 方法来获取输入的字符串.
下面的创建 Scanner 对象的基本语法:

Scanner sc = new Scanner(System.in);

next() 简单的输入输出

下面代码是 next() 输入输出最简单的用法:

import java.util.Scanner;

public class Scanner_Java {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String a =sc.next();
		sc.close();
		System.out.println(a);
	}
}

那么第 7 行的代码 sc.close(); 的作用是什么呢?
如果没有加这行代码,第 6 行的 sc 下面会有红色的小波浪线,虽然不影响程序的运行,可能会带个你意想不到的小惊喜。
因为 System.in 属于 IO 流,(Scanner 类实例化的时候需要一个InputStream流作为参数)一旦打开,它一直在占用资源,所以使用完后,切记要关闭!

next () 和 nextLine() 的区别

next() 只读取输入到空格。它不能读两个由空格或符号隔开的单词。
nextLine() 读取输入,包括单词之间的空格和除回车以外的所有符号
next()nextLine() 的用法区别如下

import java.util.Scanner;

public class Scanner_Java {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String a =sc.next();
		sc.close();
		System.out.println(a);
	}
}

Console:
输入:hello world
输出:hello

import java.util.Scanner;

public class Scanner_Java {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String a =sc.nextLine();
		sc.close();
		System.out.println(a);
	}
}

Console:
输入:hello world
输出:hello world


Scanner的常见用法

Scanner 里常用的方法其实就两类,next*(),用于获取输入,hasNext*()用于判断下一个是否还有输入。
当我们想输入输出整型数的时候,发现把第 6 行的 String 改成 int 竟然报错了!

import java.util.Scanner;

public class Scanner_Java {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a =sc.next();
		sc.close();
		System.out.println(a);
	}
}

通过查阅相关文档如下,发现了 对于输入int 类型的数,Scanner类使用 nextInt() 方法

Java 只能输入汉字字母数字 java输入文字_java


也就是把第 6 行代码改成 int a = sc.nextInt(); 就可以正常运行了。

对于其他类型的数据,改成符合该类型即可。如 nextFloat()nextDouble()

hasNext() 判断下一个是否还有输入

举一个小栗子:

import java.util.Scanner;

public class Scanner_Java {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		//String a = sc.next();
		while (!sc.hasNext("stop")) {
			String a = sc.next();
			System.out.println(a);
		}
		System.out.println("------");
		sc.close();
	}
}

当我输入连续的内容,控制台就输出什么,直到我输入 stop 程序才会运行到第 11 行。各位小伙伴可以自己试试。


以上内容就是 Scanner 的一些常见的简单的用法 ,感谢各位小伙伴的阅读,更多用法可以查看 API 文档:传送门