java 03_Java基础03—流程控制
流程控制
参考资料:《Java从入门到精通》/明日科技编著. 4版. 北京:清华大学出版社,2016
一、复合语句
Java的复合语句由“{”开始,“}”结束,又称为块语句。
复合语句都是由上至下被执行;
复合语句中可以嵌套复合语句。
public class Compound {
public static void main(String[] args) {
int x = 20;
{
int y = 35;
System.out.println(y);
{
boolean c = true;
System.out.println(c);
}
}
String string = "hello";
System.out.println(string);
//System.out.println(y); //错误代码,在作用域之外使用变量y
}
}
复合语句为局部变量创造了一个作用域,在作用域中定义的变量只能在作用域中被使用。如果在某个变量的作用域之外使用该变量,则会发生错误。
二、条件语句
1、if条件语句
if条件语句是一个重要的编程语句,用于告诉程序在某个条件成立的情况下执行某段语句,而在另一个情况下执行另外的语句。if条件语句分为三种,如下所示:
(1)简单的if条件语句
if(布尔表达式){
语句序列
}
布尔表达式:必要参数,表达式必须返回一个boolean值。
语句序列:非必要参数,可以是一条或者多条,甚至0条都可以。当布尔表达式的值为true时,执行这些语句。
public class Getif {
public static void main(String[] args) {
int a = 10;
if(a == 10){
System.out.println(a);
}
}
}
注意:当语句序列只有一条时,可以省略“{}”。
int a = 10;
if(a == 10)
System.out.println(a);
(2)if...else语句
if(布尔表达式){
语句序列1
}
else{
语句序列2
}
if后面的布尔表达式的值为true,则执行语句序列1;
if后面的布尔表达式的值为false,则执行语句序列2。
public class Getif {
public static void main(String[] args) {
int a = 80;
if(a > 60){
System.out.println("Pass");
}
else {
System.out.println("Fail");
}
}
}
(3)if...else if多分支语句
if(布尔表达式1){
语句序列1
}
else if(布尔表达式2){
语句序列2
}
...
else if(布尔表达式n){
语句序列n
}
else{
语句序列n+1
}
可以对多种情况进行处理,甚至任意种情况。
只执行其中表达式为true的语句,其他语句不执行。
所有表达式都为false,则输出else后面的语句。
public class GetSource {
public static void main(String[] args) {
int a = 55;
if(a > 90){
System.out.println("优秀");
}
else if(a > 80){
System.out.println("良好");
}
else if(a > 70){
System.out.println("中等");
}
else if(a > 60){
System.out.println("及格");
}
else {
System.out.println("不及格"); //输出不及格
}
}
}
2、switch多分支语句
在java语言中,可以使用switch语句将所有情况组织起来,以一个简单明了的方式来实现“多选一”的选择。
swicth(表达式){
case 常量1 :
语句块1
break;
case 常量2 :
语句块2
break;
...
case 常量n :
语句块n
break;
defaults:
语句块n+1
break;
}
其中,表达式必须是整型、字符型或字符串类型。对应的,常量也必须是整型、字符型或字符串类型。
如果表达式的值和某个case后面的常量值相同,则执行该case语句后面的若干语句,直到遇到break语句为止。
如果表达式没有匹配到常量,则执行defaults后面的语句。
可以没有defaults,没有匹配到的话,switch则不作处理。
public class Demo1 {
public static void main(String[] args) {
String a = "hello";
switch (a){
case "hello1" :
System.out.println("hi");
break;
case "nihao" :
System.out.println("nihao");
break;
case "hello" :
System.out.println("yes,you are right");
break;
default:
System.out.println("sorry");
break;
}
}
}
注意:
在同一个switch语句,case的常量值必须互不相同。
case语句后面的常量表达式的值可以为整数,但绝不可为实数。例如,下面的代码不合法的:
case 2.1 //代码错误
三、循环语句
循环语句就是在满足一定的条件下,反复执行某一个操作。在Java中提供了三种常用的循环语句,分别是while循环语句、do...while循环语句和for循环语句。
1、while循环语句
while语句也称条件判断语句,它的循环方式为利用一个条件来控制是否要继续执行这个语句。
while(表达式){
执行语句
}
当表达式的返回值为true时,执行{}中的语句;
执行完{}中的语句后,重新判断表达式的返回值;
当表达式的返回值为false时,退出循环。
public class Demo2 {
public static void main(String[] args) {
int x = 1;
int sum = 0;
while (x <= 10){
sum = sum + x;
x++;
}
System.out.println(sum);
}
}
2、do...while循环
while循环先判表达式是否成立,然后执行循环体,而do...while循环先执行一次循环后,再判断表达式是否成立。也就是说do...while循环的循环体语句至少被执行一次。
do{
执行语句
}
while(表达式); //这里有个分号,千万别忘了
do...while循环和while循环还有一个明显的差别,就是do...while循环在结尾多了一个分号。
public class Gess {
public static void main(String[] args) {
int a = 10;
do {
System.out.println("hello world");
a--;
} while(a > 6); //输出4次hello world
}
}
3、for循环语句
for循环用来重复执行循环体,直到某个条件得到满足后中止循环。
(1)for循环语句
for(表达式1;表达式2;表达式3){
语句序列
}
表达式1:初始化表达式,负责完成变量的初始化。
表达式2:条件表达式,返回值为boolean型的表达式,指定循环条件。
表达式3:循环的操作表达式,负责修整变量,改变循环条件。
public class Demo2 {
public static void main(String[] args) {
int sum = 0;
for (int i=2;i<=100;i+=2){
sum = sum + i;
System.out.println(sum); //计算2~100之间所有偶数之和
}
}
}
(2)foreach语句
foreach语句是for语句的特殊简化版,不能完全取代for语句,但是任何foreach语句都能改写成佛如语句版本。foreach不是一个关键字。
for(元素变量x : 遍历对象obj){
引用了x变量的Java语句;
}
foreach语句中的元素变量x,不必对其进行初化。
public class Demo2 {
public static void main(String[] args) {
int arr[] = {2,4,6};
for(int x : arr){ //遍历数组
System.out.println(x);
}
}
}
四、循环控制
循环控制包含两个方面的内容,一方面是控制循环变量的变化方式,另一方面是控制循环的跳转。控制循环的跳转需要用到break和continue两个关键词,break是中断循环,continue是执行下一次循环。
1、break语句
使用break语句可以跳出switch结构,在循环中,同样可以使用break语句跳出当前循环体,从而中断当前循环。
public class BreakTest {
public static void main(String[] args) {
for(int i=0;i<=100;i++){
System.out.println(i);
if(i == 10){
System.out.println("循环终止");
break; //中断循环
}
}
}
}
注意:如果遇到循环嵌套的情况,break只会跳出包含它的最内层循环,也就是说只跳出一层循环。
public class BreakNest {
public static void main(String[] args) {
for(int i=0;i<3;i++){
for(int j=0;j<10;j++){
System.out.println("i=" + i + " j=" + j);
if(j == 4){
break;
}
}
}
}
}
//break语句中断了内层循环,但是并没有影响外层循环。
输出结果:
i=0 j=0
i=0 j=1
i=0 j=2
i=0 j=3
i=0 j=4
i=1 j=0
i=1 j=1
i=1 j=2
i=1 j=3
i=1 j=4
i=2 j=0
i=2 j=1
i=2 j=2
i=2 j=3
i=2 j=4
如果想让break跳出外层循环,Java提供了“标签”功能,如下:
标签名:循环体{
break 标签名;
}
public class BreakNest {
public static void main(String[] args) {
Loop:for(int i=0;i<3;i++){ //给外层循环添加标签
for(int j=0;j<10;j++){
System.out.println("i=" + i + " j=" + j);
if(j == 4){
break Loop;
}
}
}
}
}
//用带有标签的break跳出外层循环
输出结果:
i=0 j=0
i=0 j=1
i=0 j=2
i=0 j=3
i=0 j=4 //当j变量的值等于4时,i的值没有增加,直接结束外层循环。
2、continue语句
continue语句是针对break语句的补充,contiune语句不是立即中止循环体,而是结束本次循环,回到循环的条件判断语句,重新开始执行循环。
在for循环语句中,循环体中遇到continue语句后,先执行循环的增量部分,然后进行条件判断。
在while和do...while循环语句中,遇到continue语句则直接回到条件判断部分。
public class ContinueTest {
public static void main(String[] args) {
for(int i=1;i<=20;i++){
if(i%2 == 0 ){ //判断i是否为偶数
continue; //先执行i++,然后跳到下一次循环
}
System.out.println(i); //输出1~20之间的奇数
}
}
}
与break一样,continue也支持标签的功能,使得可以指定continue语句跳出指定的循环体。如下所示:
标签名:循环体{
continue 标签名;
}
五、课后实践
1、编写Java程序,使用for循环打印菱形。
public class Out{
public static void main(String[] args) {
//设置菱形的大小
int size = 5;
//菱形的上半部分
for(int i = 1;i <= size; i++) {
for (int j = 1; j <= size - i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= i * 2 - 1; k++) {
System.out.print("*");
}
System.out.println(); //起换行作用
}
//菱形的下半部分
for(int i = 1; i <= size -1; i++){
for(int j = 1; j <= i; j++){
System.out.print(" ");
}
for(int k=1; k <= 2 * (size -i) -1; k++){
System.out.print("*");
}
System.out.println(); //起换行作用
}
}
}
输出结果如下所示:
*
***
*****
*******
*********
*******
*****
***
*
注意:
System.out.print()输出不换行;
System.out.println()输出自动换行。
for(int x=1; x<=5; x++){
System.out.print("*");
}
输出结果:
*****
for(int x=1; x<=5; x++){
System.out.println("*"); //自动换行
}
输出结果:
*
*
*
*
*
2、打印一个空心菱形。
public class out{
public static void main(String[] args) {
//设置菱形的大小
int size = 5;
//菱形的上半部分
for(int i = 1;i <= size; i++) {
for (int j = 1; j <= size - i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= i * 2 - 1; k++) {
//if语句判断“*”号是否位于开头或结束,若不是则输出空格
if(k == 1 || k == i * 2 - 1){
System.out.print("*");
}
else {
System.out.print(" ");
}
}
System.out.println();
}
//菱形的下半部分
for(int i = 1; i <= size -1; i++){
for(int j = 1; j <= i; j++){
System.out.print(" ");
}
for(int k=1; k <= 2 * (size -i) -1; k++){
//if语句判断“*”号是否位于开头或结束,若不是则输出空格
if(k == 1 || k == 2 * (size -i) -1){
System.out.print("*");
}
else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
输出结果如下:
*
* *
* *
* *
* *
* *
* *
* *
*
标签:语句,03,Java,int,流程,循环,public,表达式,out
来源: https://www.cnblogs.com/xuliang-daydayup/p/12900880.html
java 03_Java基础03—流程控制相关推荐
- JAVA语法基础之流程控制
在进行程序设计的时候,我们会经常进行逻辑判断,根据不同的结果做不同的事,或者重复做某件事,我们对类似这样的工作称为流程控制.在Java中,流程控制分为两大类:选择和循环.下面就依次来介绍这两类. 一. ...
- java个十百千万位余数_1 Java第三课[流程控制]
1 Java第三课[流程控制] 1.1 回顾: 1. 标识符的命名:标识符通常意义上是指 类名,包名,方法名,属性名,普通变量等等. 2. 类命名:每个单词的首字母大写; 3. 变量命名规则:字母数字 ...
- 【Vue】v-if 、v-show、v-for指令,最基础的流程控制和循环处理
本文我们来学习一下v-if,v-show和v-for指令,也就是最基础的流程控制和循环处理. v-if 和 v-show v-if 和 v-show 的作用有点类似,都是进行条件判断,我们一起来看一下 ...
- go语言打印日期_go语言基础:流程控制(4)-多重循环跳转控制
1.6 多重循环控制 1.6.1 概念解析 1)多重循环就是指将一个循环嵌套在另一个循环体内,就形成了嵌套循环.在外边的for循环称之为外层for循环,在里面的for循环称之为内层for循环.2)实质 ...
- python if else格式_【Python基础】流程控制-if..else
[Python基础]流程控制-if..else ''' 基本的使用 if 条件: 满足条件执行的代码 else: 不满足条件执行的代码 ''' # age = input("Please i ...
- Java基础笔记(入门,语法基础,流程控制,数组)
Java语言入门 发展历程 三大技术体系 JavaSE 标准版 JavaEE 企业版 JavaME 嵌入式版 Java语言特点 简单性 健壮性 面向对象 分布式 多线程 动态性 可移植性(跨平台) J ...
- java 基本语法与流程控制_Java基础语法之控制流程
Java基础语法之控制流程 语言的流程控制提供了对程序步骤的基本方法. 三大流程控制语句:顺序.选择.循环 复合结构 复合结构是以一个区块为单位的,由"{"开始"}&qu ...
- Java基础内容/基础语法/流程控制
基础内容 1.如何高效的学好java 多写代码,多写笔记,多写文章 多练交流,多练思维,多练技能 多分享,多提问,多思考 最重要(坚持) 2.计算机应用领域 1)科学计算 2)数据处理 3)自动控制 ...
- Java编程基础04——流程控制语句
1.顺序结构语句(了解) A:什么是流程控制语句 流程控制语句:可以控制程序的执行流程. B:流程控制语句的分类 顺序结构 选择结构 循环结构 C:执行流程: 从上往下,依次执行. D:案例演示 输出 ...
最新文章
- python类成员_Python的类成员和对象成员
- Java学习笔记(十)--控制台输入输出
- 细聊.NET6 ConfigurationManager的实现
- android list 替换元素_Python数据结构(一)List使用(大厂面试解答)
- C提高_day03_作业第三题
- 【综述】基于Transformer的视频语言预训练
- C#常见委托のdelegate定义,Func,Action,Predicate总结
- 用VBS脚本实现软件定条件开启
- Eclipse XML 编辑器
- OpenCV特征检测与匹配方法概览
- 第十二章 比较器(1.5)
- 阿里云人工智能pai云计算平台使用方法
- 魔法宝石(类似dp 杭电排位赛-2)
- Python遥感可视化 — Basemap作Albers投影
- 用Chrome在电脑上模拟微信、QQ浏览器
- 施密特(smit)触发器
- 取消计算机粘贴,电脑复制粘贴文件或图片后怎么设置右击取消粘贴?
- 暑期小学生计算机培训班,青岛小学生学习编程暑假
- 数据库查询和数据操纵
- 数据分析行业中的数据运营是怎么一回事?
热门文章
- 一步一步构建自己的管理系统①
- 19.7 主动模式和被动模式 19.8 添加监控主机 19.9 添加自定义模板 19.10 处理图形中的乱码 19.11 自动发现...
- 内存泄漏和内存溢出的区别
- appium===setup/setupclass的区别,以及@classmathod的使用方法
- 解决 error: command 'swig' failed with exit status 1
- 高级Python:定义类时要应用的9种最佳做法
- css flexbox模型_CSS Flexbox在全国范围内的公路旅行中得到了解释
- 自学成才翁_仅因为您是自学成才,并不意味着您必须独自学习。
- python 实现分步累加_Python网页爬取分步指南
- 2019-08-01 纪中NOIP模拟赛B组