是读取控制台输入的内容,他的创建方式是
Scanner scanner = new Scanner(System.in); //创建scarnner对像 scanner.close(); //用完记得关闭
首先来看他们的用法,以上方法是成对使用的:
scanner.hasNext() 和 scanner.next()
scanner.hasNextLine() 和 scanner.nextLine()
import java.util.Scanner; public class Project { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = ""; System.out.println("请入一行文字"); if (scanner.hasNext()){ str = scanner.next(); System.out.println("输出的内容为:"+str); } scanner.close(); } } 运行结果: 请入一行文字 hi my dear! 输出的内容为:hi
import java.util.Scanner; public class Project { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = ""; System.out.println("请入一行文字"); if (scanner.hasNextLine()){ str = scanner.nextLine(); System.out.println("输出的内容为:"+str); } scanner.close(); } } 输出结果: 请入一行文字 hi my dear 输出的内容为:hi my dear
一、next()
1、一定要读取到有效字符后才可以结束输入,输入空格和回车均不结束
2、对输入有效字符之前的空白,next() 方法会将期自动过滤掉
3、输入有效字符后的空白,next() 会作为结束字符,因此next()不能得到带有空格的字符串
二、nextLine()(使用的更多)
1、以回车结束,就是说nextLine可以读取回车之前的所有字符,因此也就能读取带空格的字符串
举个例子,不停的输入整数,每个数字回车,直到输入非数字字符结束,计算输入数字的和以及平均数
import java.text.DecimalFormat; import java.util.Scanner; public class Project1 { public static void main(String[] args) { int sum = 0; int count = 0; Scanner scanner = new Scanner(System.in); System.out.println("请输入数字,每个数字按回车确认,输入非数字结尾"); while (scanner.hasNextInt()) { if (scanner.hasNextInt()) { sum = sum + scanner.nextInt(); count = count + 1; } else { break; } } if (count != 0) { DecimalFormat decimalFormat = new DecimalFormat("0.00"); String average = decimalFormat.format((float) sum / count); System.out.println("输入的和是:" + sum); System.out.println("count的值是" + count); System.out.println("平均值是:" + average); } else { System.out.println("不可以输入零个数字"); } scanner.close(); } }