前言:
Java的输入不像 C 等其他语言那样的简便的输入 scanf
比如输入一个整数型的数 scanf("%d",&a);
这篇文章讲介绍Java怎么从键盘输入内容以及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() 的用法区别如下
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 里常用的方法其实就两类,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()
方法
也就是把第 6 行代码改成 int a = sc.nextInt();
就可以正常运行了。
对于其他类型的数据,改成符合该类型即可。如 nextFloat()
、nextDouble()
举一个小栗子:
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 文档:传送门