Scanner交互笔记

tech2022-08-08  131

用户交互scnner

一般通过Scanner类来获取用户的输入

基本语法:Scanner s = new Scanner(System.in)

通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据

next()方法获取结果

一定要读取到有效字符后才可以结束输入对输入有效字符之前遇到的空白,next()方法会自动将其去掉只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符next()不能得到带有空格的字符串 package com.kino.scanner; import java.util.Scanner; public class Demo01 { public static void main(String[] args) { // 创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("使用next方式接收:"); // 判断用户有没有输入字符串 if (scanner.hasNext()){ // 使用next方式接收 String str = scanner.next(); // 程序会等待用户输入完毕 System.out.println("输出的内容为:"+str); } // 凡是属于IO流的类如果不关闭会一直占用资源,需养成良好习惯用完就关闭哦! scanner.close(); } }

可以注意到这里我们的输入为"hello world",但是输出结果只有"hello"


nextLine()获取结果

以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符可以获得空白 package com.kino.scanner; import java.util.Scanner; public class Demo02 { public static void main(String[] args) { // 创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("使用nextLine方式接收:"); // 判断是否还有输入 if (scanner.hasNextLine()){ String str = scanner.nextLine(); // 等待用户去输入 System.out.println("输出的内容为:"+str); } scanner.close(); } }

可以注意到这里我们的输入为"hello world",输出结果也为"hello world"

使用nextLine()方法不通过判断获得结果

package com.kino.scanner; import java.util.Scanner; public class Demo03 { public static void main(String[] args) { // 创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); // 固定开始语句 System.out.println("请输入数据:"); // 等待用户去输入,直到敲下回车才将输入的东西作为一个变量保存在str字符串里 String str = scanner.nextLine(); // 固定输入语句 System.out.println("输出的内容为:"+str); scanner.close(); // 固定结束语句 } }


scanner进阶

package com.kino.scanner; import java.util.Scanner; public class Demo04 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 从键盘接收数据 int i = 0; float f = 0.0f; System.out.println("请输入整数:"); if (scanner.hasNextInt()){ i = scanner.nextInt(); System.out.println("整数数据:"+i); }else { System.out.println("你输入的不是整数数据"); } System.out.println("请输入小数:"); if (scanner.hasNextFloat()){ f = scanner.nextFloat(); System.out.println("小数数据:"+f); }else { System.out.println("你输入的不是小数数据"); } scanner.close(); } }

输出结果:


**小案例:**输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入,并输出执行结果

package com.kino.scanner; import java.util.Scanner; public class Demo05 { public static void main(String[] args) { // 接收键盘输入的数据 Scanner scanner = new Scanner(System.in); // 定义变量"和" double sum = 0; // 定义变量"输入了多少个数字" int count = 0; System.out.println("请输入数据:"); // 通过循环判断是否还有输入,并在里面对每一次进行求和和统计 // 如果输入的数字不是double类型 则会跳出这个循环 while (scanner.hasNextDouble()){ //如果有double类型 double x = scanner.nextDouble(); // 将该double类型的数据存储在x变量中 // 输入完一个数之后,多了一个数字,需要给count+1 count += 1; // 也可用count++代替 // 计算总和 sum += x; } System.out.println(count + "个数的和为" + sum); System.out.println(count + "个数的平均值是" + (sum / count)); scanner.close(); } }

输出结果:

最新回复(0)