Java流程控制
一:用户交互Scanner
Scanner对象:
之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入
基本语法:
Scanner scanner = new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要 使用hasNext()与hasNextLine()判断是否还有输入的数据。
话不多说,直接上手吧:
1 package com.duan.scanner; 2 3 import java.util.Scanner; 4 5 public class Demo01 { 6 7 public static void main(String[] args) { 8 9 //创建一个扫描器对象,用于接收键盘数据 10 //new Scanner(System.in)创建了一个对象,通过system.in接收用户的输入,并且把它们封装成了scanner对象, 11 //之后用scanner来进行一些用户的扫描,测试。 12 Scanner scanner = new Scanner(System.in); 13 14 System.out.println("使用next方式接收:"); 15 16 //判断用户有没有输入字符串 17 if (scanner.hasNext()){ 18 //使用next方式接收 19 String str = scanner.next();//程序会等待用户输入完毕 20 System.out.println("输入的内容为:"+ str); 21 } 22 23 //凡是属于IO流的类如果不关闭的会一直占用资源,要养成好习惯用完就关掉 24 scanner.close(); 25 26 } 27 } 28 29 运行结果:使用next方式接收: 30 hello world 31 输入的内容为:hello
我们输入了hello world 但是只得到hello,因为next()方法会以空格结束,因此用hasnextLine()方法
1 package com.duan.scanner; 2 3 import java.util.Scanner; 4 5 public class Demo02 { 6 7 public static void main(String[] args) { 8 9 //从键盘接收数据 10 Scanner scanner = new Scanner(System.in); 11 12 System.out.println("使用nextLine方法接收:"); 13 14 //判断是否还有输入 15 if(scanner.hasNextLine()){ 16 String str = scanner.nextLine();//等待用户去输入 17 System.out.println("输出的内容为:"+str); 18 } 19 20 //关闭流 21 scanner.close(); 22 } 23 }
Scanner有两个常用的方法:
next():
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才可将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串,在输入有效字符后,以空格为结束符。
nextLine():
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
- 可以获得空白
上面只是为了测试,正常使用时候用下面的代码:
1 package com.duan.scanner; 2 3 import java.util.Scanner; 4 5 public class Demo03 { 6 public static void main(String[] args) { 7 //从键盘接收数据 8 Scanner scanner = new Scanner(System.in); 9 10 System.out.println("请输入数据:"); 11 12 String str = scanner.nextLine(); 13 14 System.out.println("输出的内容为:" + str); 15 16 //关闭流 17 scanner.close(); 18 } 19 } 20 21 结果: 22 请输入数据: 23 欢迎来到Java世界,你们好! 24 输出的内容为:欢迎来到Java世界,你们好!