1.Scanner对象
- next():
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next不能得到带有空格的字符串
- nextLine():
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
- 可以获得空白
2.nextLine()示例
package com.xf233.com;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextline方式接收:");
if (scanner.hasNextLine()){
String data=scanner.nextLine();
System.out.println("输入内容为::"+data);
}
scanner.close();
}
}
备注:这里的 if (scanner.hasNextLine()) 其实可有可无,这个判断是用来检测是否有下一个输入,但在用户输入时应该不会返回false,所以 scanner.hasNextLine() 应该是用在Scanner的高级用法中,如以换行键为分隔符,利用循环语句取一个txt文档内所有人的名字时,当读取完最后一个名字时,再往下读取 scanner.hasNextLine() 会返回false,以此作为标志我们可以跳出循环,如下所示
package com.xf233.com;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner scanner = null;
try {
scanner = new Scanner(new File("C:/1.txt"));
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
while (scanner.hasNext()) {
System.out.println(scanner.nextLine() );
}
/*如上例子,没有下一个的时候就返回false了*/
/*此处的try/catch作用为异常处理*/
scanner.close();
}
}
3.进阶用法
① 利用hasNextInt()来判断输入的数据类型
package com.xf233.com;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextline方式接收:");
if (scanner.hasNextInt()){
String data=scanner.nextLine();
System.out.println("输入的整数为::"+data);
}
else{
System.out.println("输入的不是整数");
}
scanner.close();
}
}
②利用循环结构来计算输入的整数值
package com.xf233.com;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
int sum=0;
int m=0;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入整数数字:");
while (scanner.hasNextInt()){
int x = scanner.nextInt();
++m;
sum=sum+x;
}
System.out.println("输入的数字总和为:"+sum);
System.out.println("输入的数字平均值为:"+(sum/m));
scanner.close();
}
}
Comments | NOTHING