赞
踩
一 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
首先要导入包 import java.util.Scanner;
Scanner类的创建对象: Scanner S=new Scanner(System.in);
方法基本格式
hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx
nextXxx() 获取下一个输入项。Xxx的含义和上个方法中的Xxx相同。
S对象调用下列方法(函数),读取用户在命令行输入的各种数据类型:
next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShot()。
通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:
二 Scanner类中常用的方法next()和nextLine()的区别:
next():作为字符串输入的方法,自动屏蔽掉输入的分隔符,如空格、Tab键、回车键,直到遇到有效地字符输入后,则将这些分隔符作为结束标志;
nextLine();则是将从开始运行所输入的所有的字符,包括分隔符,均作为控制台输入,只有在遇到enter回车键时,才结束输入,并将所有的内容作为输入内容传给Scanner;
也就是说,next()方法并不能返回带空格、Tab键、回车符的字符串,而nextLine可以;
用next()方法代码如下:
- import java.util.Scanner;
- public class dd {
-
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- // 从键盘接收数据
-
- // next方式接收字符串
- System.out.println("next方式接收:");
- // 判断是否还有输入
- if (scan.hasNext()) {
- String str1 = scan.next();
- System.out.println("输入的数据为:" + str1);
- }
- scan.close();
- }
- }
import java.util.Scanner;
public class dd {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
// next方式接收字符串
System.out.println("next方式接收:");
// 判断是否还有输入
if (scan.hasNext()) {
String str1 = scan.next();
System.out.println("输入的数据为:" + str1);
}
scan.close();
}
}
输出的结果:
用nextLine()方法代码如下:
- import java.util.Scanner;
- public class dd {
-
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- // 从键盘接收数据
-
- // next方式接收字符串
- System.out.println("nextLine方式接收:");
- // 判断是否还有输入
- if (scan.hasNext()) {
- String str1 = scan.nextLine();
- System.out.println("输入的数据为:" + str1);
- }
- scan.close();
- }
- }
import java.util.Scanner;
public class dd {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
// next方式接收字符串
System.out.println("nextLine方式接收:");
// 判断是否还有输入
if (scan.hasNext()) {
String str1 = scan.nextLine();
System.out.println("输入的数据为:" + str1);
}
scan.close();
}
}
输出的结果:
如果要求一次接受一个整数、浮点数和字符串?
假如你输入:
- 25
- 25.666
- Welcome to Java!
- import java.util.Scanner;
-
- public class Test {
-
- public static void main(String[] args) {
- Scanner sc=new Scanner(System.in);
- int x=sc.nextInt();
- double y=sc.nextDouble();
- sc.nextLine(); /*去掉sc.nextDouble()语句后剩下的“\n”符号*/
- String s= sc.nextLine();
- System.out.println("String: "+s);
- System.out.println("Double: "+y);
- System.out.println("Int: "+x);
-
- }
- }
用户的输入在计算机缓冲区中是这样存储的:42\n3.1415\nWelcome to HackerRank Java tutorials!\n
使用nextInt()读取42结束,剩下\n3.1415\nWelcome to HackerRank Java
使用nextDouble()读取3.1415,剩下\nWelcome to HackerRank Java
如果此时直接用nextLine()读取,该函数遇到换行符\n就结束
所以需要在这之前输入nextLine(),去掉缓冲区的\n,然后再读取
这是由于nextLine()会读取\n之前的所有内容,并去除\n,而nextDouble()等曾不会去除它后面的\n
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。