JavaSE——流程控制(接收输入Scanner、分支结构(if与switch)、循环结构(while、do-while与for))
第3节 流程控制
一、接收用户输入
使用Scanner
类来接收用户的输入。
新建一个Scanner
对象:Scanner input = new Scanner(System.in);
input
可以接收各种数据类型的输入:比如nextInt
、nextByte
等,但是这样不太安全,因为如果输入了别的类型的数据,代码就会直接报错;
所以比较常用的是next()
和nextLine()
,它们都返回的是String
类型;
其中
next
会从第一个不为空格的字符开始接收,然后遇到空格或换行符结束接收;nextLine
会接收一整行内容,直到遇到换行符结束接收;注意不要同时使用
next
和nextLine
,会得不到想要的结果。
import java.util.Scanner;public class input {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入next接收的内容:");String str1 = input.next();System.out.println(str1);}
}
结果如下:
请输入next接收的内容:24dg 78tyu
24dg
import java.util.Scanner;public class input {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入nextLine接收的内容:");String str2 = input.nextLine();System.out.println(str2);}
}
结果如下:
请输入nextLine接收的内容:ud78 56dgy__@#$ !~ud78 56dgy__@#$ !~
二、执行结构
1996 年, 计算机科学家 Bohm 和 Jacopini 证明了: 任何简单或复杂的算法都可以由顺序结构、 分支结构和循环结构这三种基本结构组合而成。它们的共同点是都包含一个入口和一个出口, 它们的每个代码都有机会被执行, 不会出现死循环。
顺序结构 :一种基本的控制结构,按照语句出现的顺序执行操作;
分支结构 :又称为选择结构,根据条件成立与否来执行操作;
循环结构 :一种重复结构,如果条件成立,它会重复执行某一循环体,直到出现不满足的条件为止。
三、分支结构
3.1 if条件语句
if 条件结构是根据条件判断之后再做处理
if(条件语句){…}
if (条件语句){…}else{…}
if (条件语句){…}else if(条件语句){…}
if (条件语句){…}else if(条件语句){…}else{…}
例子: 用户输入学生成绩, 判断成绩是否及格, 判断条件为 优良: > 90、 良好: 81-90、 中: 60-80、 不及格: <60
import java.util.Scanner;public class ifelse {public static void main(String[] args) {System.out.println("请输入考试成绩:");Scanner input = new Scanner(System.in);int s = input.nextInt();if(s >= 120 || s < 0) {System.out.println("输入成绩有误!");}else if(s >= 90) {System.out.println("成绩优秀!");}else if(s >= 80) {System.out.println("成绩良好!");}else if(s >= 70) {System.out.println("成绩合格!");}else {System.out.println("成绩不合格!");}}
}
3.2 switch语句
switch(表达式){ case 取值 1: 语句块 1;break; case 取值 n: 语句块 n;break; default: 语句块 n+1;break; }
switch 语句有关规则
表达式的返回值必须是下述几种类型之一: int, byte, char, short,String;
case 子句中的取值必须是常量, 且所有 case 子句中的取值应是不同的;
default 子句是可选的;
break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块; 如果 case 后面没有写 break 则直接往下面执行!
case 后面的执行体可写{ }也可以不写{ }
例题: 多分支月份输出天数(充分利用语句特性)
import java.util.Scanner;public class switchcase {public static void main(String[] args) {System.out.println("请输入一个月份(1-12):");Scanner input = new Scanner(System.in);String text = input.next();switch (text) {case "1":case "2":case "3":System.out.println("春季");break;case "4":case "5":case "6":System.out.println("夏季");break;case "7":case "8":case "9":System.out.println("秋季");break;case "10":case "11":case "12":System.out.println("冬季");break;default:System.out.println("输入月份有误!");break;}}
}
四、循环结构
**循环语句功能 **
在循环条件满足的情况下, 反复执行特定代码
**循环语句分类 **
for 循环
while 循环
do/while 循环
4.1 while循环语句
符合条件, 循环继续执行; 否则, 循环退出
特点: 先判断, 再执行
语法:
while(条件表达式){ //语句块; }
使用 while 循环的步骤
1、 分析循环条件和循环操作
2、 套用 while 语法写出代码
3、 检查循环是否能够退出
实现示例:
录入班级人数和学员成绩, 计算班级学员的平均成绩
import java.util.Scanner;public class whiledemo {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入班级总人数");//使用变量studentNum记录班级总人数int studentNum = input.nextInt();//用于记录循环的次数,以及控制循环何时结束int i = 0;//定义变量sum,用于统计总分数int sum = 0;while(i < studentNum) {i++;System.out.println("请输入第"+i+"个学生的成绩:");int s = input.nextInt();sum += s;}System.out.println("学生的平均成绩为:"+sum/studentNum);}
}
4.2 do-while循环语句
先执行一遍循环操作, 符合条件, 循环继续执行; 否则, 循环退出
特点: 先执行, 再判断
语法:
do { //循环操作 }while ( 条件表达式 );
**while 循环和 do-while 循环的区别? **
while:先判断条件, 如果条件满足, 再执行循环操作
do while:先执行一遍循环操作, 然后再判读条件, 如果条件满足, 继续执行循环操作。
4.3 for循环语句
语法:
for(初始化参数; 判断条件; 更新循环变量){ //循环体; }
4.4 break与continue
break是用于终止本轮所有次循环,即不执行本次循环中break后面的语句,直接退出循环;
continue是用于终止本轮本次循环,即本次循环中continue后面的代码不执行,进行下一次循环的入口判断。
4.5 如何退出多重循环
在要退出到的地方起个别名,然后break XXX;
public class exit_many_xunhuan {public static void main(String[] args) {haha:for(int i=0;i<10;i++) {for(int j=0;j<10;j++) {System.out.println("i="+i+" , j="+j);if (i==5 && j==5) {break haha;}}}}
}
补充:如何判断用户输入类型
import java.util.Scanner;public class panduan_input_leixing {public static void main(String[] args) {System.out.println("请输入一个数字:");Scanner input = new Scanner(System.in);//在接收输入之前判断输入的类型是否为intif(input.hasNextInt()) {int num = input.nextInt();System.out.println("你输入的是:"+num);}else {System.out.println("你输入的类型不是int");}}
}
JavaSE——流程控制(接收输入Scanner、分支结构(if与switch)、循环结构(while、do-while与for))相关推荐
- 流程控制(内含scanner、if语句、switch语句、while和for循环)
流程控制(内含scanner.if语句.switch语句.while和for循环) 用户交互Scanner 通过引用scanner类获取用户的输入,下面代码可以直接背着用 Scanner scanne ...
- JAVA键盘录入 分支结构if swtich语句+循环结构for while语句 练习
JAVA键盘录入 分支结构if swtich语句+循环结构for while语句 练习 今天学习的三个点,键盘录入 分支结构和循环结构.感觉这些还是得通过实操大量题目后才便于理解,前期只听教师讲解和死 ...
- 【零基础 快速学Java】韩顺平 p104-147 流程控制:顺序、分支、循环、跳转 控制语句 (if、for、while、dowhile、break、continue、return)
课程 p104-147 流程控制介绍 在程序种,程序运行的流程控制决定程序是如何执行的. 主要有三大流程控制语句: 顺序控制 分支控制 循环控制 顺序 简单理解就是从头到尾. 分支控制if-else ...
- Java流程控制——用户交互Scanner
用户交互Scanner Scanner对象 之前的学的基本语法中我们并没有实现程序与人的交互,但是Java给我们提供了这样一个工具类,让我们可以获取用户的输入.Java.util.Scanner 是J ...
- python在哪些控制结构中使用else保留字_python的程序控制结构-循环结构与random库使用和圆周率案例--pyt...
python的程序控制结构-循环结构与random库使用和圆周率案例--pyt python的程序控制结构-循环结构与random库使用和圆周率案例--python-7-days 循环结构 - for ...
- c语言条件型循环结构报告,C语言循环结构实习报告 - 副本
认识(实习)报告 实验(实习)名称循环结构程序设计 日期得分指导教师系专业年级班次姓名学号 一. 实验目的 (1)掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数. ⑵了 ...
- java三种循环结构的关键字,Java循环结构_常量_关键字
语法格式: int i = 0://初始化值 while(i<10){ //循环判断 循环体 循环重复执行的代码 循环控制语句 } 解析While循环 初始化条件[定义初始变量.只执行一次] ...
- c加加高级语言循环结构,高级C语言循环结构程序设计.ppt
1,高级语言程序设计,孟宇龙计算机科学与技术学院mengyulong@,2,第5章循环结构程序设计,本章需要掌握的内容掌握3种基本循环.掌握多重循环.掌握continue和break的使用.编写循环结 ...
- python中循环结构_python中的循环结构等相关知识
分支结构 1.单分支:一般用于只会发生一种情况的场景,if #90以上优秀 score=95 if score>90: print("优秀") 2.双分支:一般用于会发生两种 ...
最新文章
- 在SQL Server里如何进行页级别的恢复
- 小白学数据分析-----留存率分析_I[次日留存率突然下降了50%?]
- LeetCode 144. 二叉树的前序遍历(前序遍历)
- java 1.8环境变量_java1.8安装及环境变量配置教程
- Python 集合 day3
- Eclipse中 Clean 的时候总是警告 org.apache.catalina.webresources.Cache backgroundProcess
- 计算机专业自我简介50字,2021年个人简历自我评价50字
- python爬取豆瓣电影250_python爬取豆瓣电影top250数据存入数据库
- 软件开发沉思录读书笔记
- [CLR团队公告]CLR基础研究团队:精品系列推广活动启动
- 爆笑区块链段子送给你~
- 常用小波基函数以及多尺度多分辨率的理解1
- 【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现(更新完毕)
- 程序员考证,这十大证书含金量最高
- ArcEngine导出为PDF中汉字乱码问题
- 2021-06-03 JavaGUI 贪吃蛇+图片素材免费
- 2000元以下高性价比800万像素相机推荐
- 把ListView和GridView与AppBar实现上下联动
- 程序员这个身份,比你想象的还值钱
- vue+js+海康web开发包接入海康威视摄像头
热门文章
- 编php矩阵求和,PHP二维数组如何求和?
- 论文浅尝 - AAAI2021 | 从历史中学习:利用时间感知拷贝生成网络建模时态知识图谱...
- RuntimeError: Failed to register operator torchvision::_new_empty_tensor_op. +torchtorchversion版本匹配
- 阿里内推算法岗位编程笔试题
- Android官方开发文档Training系列课程中文版:创建自定义View之View的交互
- 企业战略咨询方法:学习SWOT分析
- 知识图谱最新权威综述论文解读:实体发现
- 解决表单提交的数据丢失问题
- 12月25晚-12月29日做的两个网页
- python 替换字符串