2022-10-11 10:58:41
前言本文开始流程控制方面的学习,主要包括用户交互和流程控制语句,适合新手学习 。
1 用户交互Scanner1.1 Scanner对象Java提供了一个可以获取用户输入的Scanner工具类
基本语法:
Scanner s = new Scanner(System.in);
通过Scanner类的next()
和nextLine()
方法获取输入的字符串,读取之前使用hasNext()
与hasNextLine()
判断是否还有输入的数据 。
① next()
和nextLine()
方法代码示例:
public class Demo01 {public static void main(String[] args) {//创建一个扫描器对象,用于接收键盘数据Scanner scanner = new Scanner(System.in);System.out.println("使用next方式接收:");//判断用户有没有输入字符串if (scanner.hasNext()==true){//使用next方式接收String str = scanner.next();System.out.println("输出的内容为:"+str);}//凡是属于IO流的类,如果不关闭会一直占用资源,要养成良好习惯,用完就关scanner.close();}}
结果:
使用next方式接收:hello world输出的内容为:hello
【注意】:无法输出空格之后的数据
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,
next()
方法会自动将其去掉 - 只有输入有效字符才将其后面输入的空白作为分隔符或者结束符
next()
不能得到带有空格的字符串
hasNext()
与hasNextLine()
方法代码示例: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();}}
结果:使用nextLine方式接收:hello world输出的内容为hello world
- 以enter为结束符
- 可以获取空格
hasNextInt()
和hasNextFloat()
方法示例:import java.util.Scanner;public class Demo03 {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();}}
结果:请输入整数:10整数数据:10请输入小数:0.6小数数据:0.6
1.2 Scanner进阶【练习题】:输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果import java.util.Scanner;public class Demo01 {public static void main(String[] args) {//输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果Scanner scanner = new Scanner((System.in));//从键盘接收数据double sum = 0;//计算输入了多少个数字int m = 0;System.out.println("请输入数据:");//通过循环判断是否还有输入,并在里面对每一次进行求和和统计while (scanner.hasNextDouble()){double x = scanner.nextDouble();m = m + 1; //m++sum = sum + x;System.out.println("你输入了第"+m+"个数据,当前结果sum="+sum);}System.out.println(m + "个数的和为" + sum);System.out.println(m + "个数的平均数为" + (sum / m));scanner.close();}}
结果:请输入数据:10你输入了第1个数据,当前结果sum=10.022你输入了第2个数据,当前结果sum=32.0222你输入了第3个数据,当前结果sum=254.0X3个数的和为254.03个数的平均数为84.66666666666667
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UML类中的6种关系
- 求生之路如何建立局域网联机游戏(求生之路2 局域网联机)
- 求生之路怎么开多人联机(求生之路如何本地联机)
- 求生之路联机方法(求生之路如何远程联机)
- 五 微软出品自动化神器【Playwright+Java】系列 之常见点击事件操作
- 不会游泳的人如何自学游泳(一般人如何学习游泳)
- Java一次返回中国所有省市区三级树形级联+前端vue展示【200ms内】
- PHP Phar反序列化学习
- 【软件学习】怎么在Word里面设置MathType分隔符,使公式按照章节自动编号
- Java代码审计之实战某博客