Scanner类中next()与nextLine()的区别
Scanner类
Scanner是Java5的新特性,我们可以通过Scanner类来从键盘获取用户输入的内容。
下面是创建Scanner对象的语法,创建之前需要导入Scanner的包:
`import java.util.Scanner; `
`Scanner scanner = new Scanner(System.in);`
下面我们演示一个最简单的数据输入,并通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:
使用next方法:
import java.util.Scanner;
public class DemoNext{
public static void main(String[] args){
//通过Scanner类获取用户输入
Scanner scanner = new Scanner(System.in);
//使用next方式接收字符串
System.out.println("next方式接收:");
//使用if判断用户是否还有输入
if(scanner.hasNext()){
String str = scanner.next();
System.out.println("输入的数据为:" + str);
}
//凡是属于IO流的类如果不关闭将会一直占用资源
scanner.close();
}
}
执行以上程序输出的结果为:
next方式接收:
Hello World
输入的数据为:Hello
以上运行结果,我们可以很清晰的看到World字符串并没有输出,接下来我们看nextLine
使用nextLine方法:
import java.util.Scanner;
public class DemoNextLine{
public static void main(String[] args){
//通过Scanner类获取用户输入
Scanner scanner = new Scanner(System.in);
//使用nextLine方式接收字符串
System.out.println("nextLine方式接收:");
//使用if判断用户是否还有输入
if(scanner.hasNextLine()){
String str2 = scanner.nextLine();
System.out.println("输入的数据为:" + str2);
}
scanner.close();
}
}
执行以上程序输出的结果为:
nextLine方式接收:
Hello World
输入的数据为:Hello World
可以很清晰的看到World字符串被输出
next()与nextLine()区别:
next():
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才可以将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
nextLine():
? 1.以Enter为结束符,也就是说nextLine()方法返回的是输入会车之前的所有字符
? 2.可以获得空白
Scanner练习题:
? 输入多个数字,并求出总和和平均数,每输入一个数字用回车确认,通过输入非数字来结束,并输出执行结果:
import java.util.Scanner;
public class DemoNextLine{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字:");
//和
double sum = 0;
//计算输入了多少个数字
int m = 0;
//通过循环判断是否还有输入,并在里面对每一次进行求和和统计
while(scanner.hasNextDouble()){
//x:用来存是否有下一个数
double x = scanner.nextDouble();
m++; //m = m + 1;
sum = sum + x;
System.out.println("你输入了第" + m + "个数据,当前结果为sum =:" + sum);
}
System.out.println(m + "个数的和为:" + sum);
System.out.println(m + "个数的平均值为:" + (sum / m));
scanner.close();
}
}
执行以上程序输出结果为(输入非数字来结束当前程序):
请输入数字:
50
你输入了第1个数据,当前结果为sum =:50.0
60
你输入了第2个数据,当前结果为sum =:110.0
70
你输入了第3个数据,当前结果为sum =:180.0
80
你输入了第4个数据,当前结果为sum =:260.0
end
4个数的和为:260.0
4个数的平均值为:65.0
更多Scanner操作,可点击此处参考Java API文档