Java流程控制
用户交互Scanner
-
之前学习的语法我们没有实现程序和人际交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.utl.Scanner是Java5的新特性,我们可以通过Scanner类来获取用户的输入
-
基本语法 Scanner scanner=new Scanner(System.in)
通过Scanner类的nest()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
-
next():
-
一定要读取到有效字符后才可以结束输入
-
对输入有效字符之前遇到的空白,next()方法会自动去掉 只能拿到空格之前的空格之后的无法获取"Hello World"空格之后的World无法拿到
-
只有输入有效字符后才能将其后面输入的空白作为分个符或者结束符
-
next()不能得到带有空格的字符
-
列:
import java.util.Scanner; public class Test1 { 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(); } } 使用next方式接收: Hello World 输出的内容为:Hello Process finished with exit code 0
-
nextLine():
-
以Enter作为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
-
可以获得空白
-
列:
import java.util.Scanner; public class Test2 { public static void main(String[] args) { //从键盘获取数据 Scanner scanner = new Scanner(System.in); System.out.println("请输入数据:"); //判断用户有没有输入数据 后面的==true可以省略默认会加上 if (scanner.hasNextLine() == true) { //使用nextLine()方式接收,同时等待用户输入完毕 String str = scanner.nextLine(); System.out.println("输入的内容为:" + str); } scanner.close(); } } 请输入数据: Hello World 输入的内容为:Hello World Process finished with exit code 0
-
使用时可以用if(scanner.hasNextLine)判断是否还有输入也可以去掉平时nextLine()用的较多
import java.util.Scanner; public class Test3 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入数据:"); //这里没有判断数据是否输入就直接接收了数据 String str = scanner.nextLine(); System.out.println("输入的数据为:" + str); scanner.close(); } } 请输入数据: Hello Woeld 输入的数据为:Hello Woeld Process finished with exit code 0
-
可以用Scanner接受整数和小数:从键盘接收数据并判断输入的数据
import java.util.Scanner; public class Test4 { 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()) { int i = scanner.nextInt(); System.out.println("整数为:" + i); } else { System.out.println("输入的不是整数"); } System.out.println("请输入小数:"); if (scanner.hasNextFloat()) { float f = scanner.nextFloat(); System.out.println("浮点数为:" + f); } else { System.out.println("输入的不是小数"); scanner.close(); } } 请输入整数: 24.24 输入的不是整数 请输入小数: 浮点数为:24.24 Process finished with exit code 0
-
案例 我们可以输入多个数字,并求其中和和平均数,每输入一个数字用回车键确认,通过输入非数字结束输入并输出执行结果
import java.util.Scanner; public class Text5 { /*案例 我们可以输入多个数字,并求其中和和平均数,每输入一个数字用回车键确认, 通过输入非数字结束输入并输出执行结果 */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入数据:"); double a = 0; int b = 0; while (scanner.hasNextDouble()) { double c = scanner.nextDouble(); b = b + 1; a = a + c; System.out.println(b + "个数的和为:" + a); System.out.println(b + "个数的平均数为:" + (a / b)); } System.out.println("输入的不是整数结束输入"); scanner.close(); } } 请输入数据: 4 1个数的和为:4.0 1个数的平均数为:4.0 5 2个数的和为:9.0 2个数的平均数为:4.5 6 3个数的和为:15.0 3个数的平均数为:5.0 fffs 输入的不是整数结束输入 Process finished with exit code 0
-
练习,判断输入的数是否是整数
import java.util.Scanner; public class Text6 { public static void main(String[] args) { //引入Scanner类 Scanner scanner = new Scanner(System.in); System.out.println("请输入整数:"); int i; //判断数据是否存入 if (scanner.hasNextInt()) { //使用nextInt()接收数据 i = scanner.nextInt(); System.out.println("输入的整数为:" + i); } else { System.out.println("输出的不是整数"); } scanner.close(); } } 请输入整数: 24.244 输出的不是整数 Process finished with exit code 0