java基础—第三章、流程控制
先来写一下第二章的练习三:
//1.接收年份
System.out.println("请输入年份:");
Scanner scan = new Scanner(System.in);
//2.获取年份
int year = scan.nextInt();
//3.条件判断
String result = (year % 4 == 0 && year % 100 != 0 ||
year % 400 == 0 ? "是闰年" : "是平年";
//4.输出结果
System.out.println(year + result);
目录
第一节、流程控制
任何程序逻辑都是由顺序、分支和循环组成。
程序在运行过程中,根据不同条件执行不同的结果
第二节、顺序结构
自上而下,依次执行
int n = 9;
int num = 10;
num += n;
System.out.println(num);
第三节 、分支结构
一.if语句
1.格式:
//只有一条语句时,可加可不加花括号,但尽量不要省略花括号
if (条件表达式) 或: if(条件表达式){
语句1; 语句1;
}
//当有多条语句时,必须加花括号
if (条件表达式){
语句1;
语句2;
.....
}
2. if流程图:
3.例子:
int n = 5;
int num = 12;
if(n > 10)
{
n -= 5;
}
if(n < 10){
n += 5;
num +=5;
}
二.if esle 语句
//只有一条语句时,可加可不加花括号,但尽量不要省略花括号
if (条件表达式) 或: if(条件表达式){
语句1; 语句1;
else }else{
语句2; 语句2;
}
//当有多条语句时,必须加花括号
if (条件表达式){
语句1;
语句2;
.....
}else{
语句1;
语句2;
.....
}
2. if else 流程图:
3. if else语句的执行逻辑:
先判断条件表达式,如果为true,执行if{}中的语句,否则,执行else()的语句
4.练习:判断45数偶数还是奇数:
int n = 45;
if(n % 2 == 0){
System.out.println(n+"是偶数!");
}else{
System.out.println(n+"是奇数!");
}
三. if else if 语句
具体逻辑参照if else
//else if的执行逻辑 -- 简化了if else的嵌套
int score = 61;
if(score >= 90) {
System.out.println("A");
} else if(score < 90 && score >= 80) {
System.out.println("B");
} else if(score < 80 && score >= 60) {
System.out.println("C");
} else {
System.out.println("D");
}
四.switch 语句
- 一种特殊的分支,运行通道与switch(整型表达式)中的整型表达式有关。
- 当传入整型常量值时,执行对象case通道。
- 且每一个case通道都必须要和break关键字配合使用,如果不加break,就会执行下一个case,直 到遇到break为止或执行完全部的case。
- !!!case后面必须跟整型常量值。
- switch(整数表达式)中整数表达式的类型只能为:
- byte、int、short
- char
- String表达式(1.7更新后)
- case 整型常量值中整型常量值的取值范围只能为:
- 必须为整型-不能超出int的取值范围。
- 必须为常量或常量表达式( 1/1 、 5-4)。
2. switch-case分支演示
2.1.每个case后面都有break语句
int i = 1;
switch(i){
case 0: System.out.println("0"); break;
case 1: System.out.println("1"); break;
case 2: System.out.println("2"); break;
default: System.out.println("null");
}
//执行结果为1
2.2.个别case后有break语句
int i = 1;
switch(i){
case 0: System.out.println("0"); break;
case 1: System.out.println("1");
case 2: System.out.println("2"); break;
default: System.out.println("null");
}
/*执行结果为:
1
2
*/
2.3.每个case后都没有break
int i = 1;
switch(i){
case 0: System.out.println("0");
case 1: System.out.println("1");
case 2: System.out.println("2");
default: System.out.println("null");
}
/*执行结果为:
1
2
null
*/
4.比较
与if else结果相比优势:
- 效率更高
- 结构更清晰
- JDK从1.7版本后才开始支持字符串表达式的\
5.综合练习:
判断成绩(score)的等级:
score < 60 :不及格
score > = 60 && socre < 80:及格
score > = 80 && socre < 90:良好
score > = 90 && socre <= 100:优秀
public class SwitchTest {
public static void main(String[] args) {
int score = 65;
switch(score / 10){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5: System.out.println("不及格");break;
case 6:
case 7: System.out.println("及格");break;
case 8: System.out.println("良好");break;
case 9:
case 10: System.out.println("优秀");break;
}
}
}
第四节、循环结构
一、while循环
1.格式:
while(boolean 循环条件){//当boolean表达式的值为true时执行循环体
循环体;
}
2.while用于处理循环逻辑
//计算0-100的和
int i = 0;//循环变量
int sum = 0;//结果
while(i <= 100) {
sum += i;//累加
i ++;//循环变量自增
}
3.while循环与break配合使用
break:强制退出循环
//计算0-50的和
int i = 0;//循环变量
int sum = 0;//结果
while(i <= 100) {
sum += i;//累加
i ++;//循环变量自增
if(i == 50) {
break;
}
}
3.while循环与continue配合使用
continue:提前结束本次循环,继续下一次循环
//计算0-100的和,但不包括50
int i = 0;
int sum = 0;
while(i <= 100){
if(i == 50){
i ++;
continue;
}
sum +=i;
i ++;
}
二、do while循环
1.格式:
do{
循环体
}while(boolean表达式); // 当boolean表达式为true,会执行循环体
2.do while用于处理循环逻辑
int pwd;
do{
System.out.println("请输入密码");
pwd = scan.nextInt();
}while(pwd != 123456); // 判断输入的密码是否为123456,直到输对为止
- while是先判断后执行的,而dowhile是先执行后判断
- do while无论条件满足或者不满足都会先执行一次循环体
三、for循环
1.格式:
for(循环变量1;循环条件;循环变量的改变){
循环体;
}
2.for循环的三要素:循环变量、循环条件、循环变量的改变
3.执行流程:
- 循环变量,且只执行一次
- 循环条件
- 循环体
- 循环变量的改变
4.for循环的变形:
int i = 0;
for(;i < 101;){
i ++;
}
5.自造死循环的for循环
for(;;) //自造死循环
6.有固定次数的循环
int sum = 0;
for(int i = 0;i <= 100;i ++){
if (i % 10 == 3 )
continue;
sum += i;
}
System.out.println(sum);
7.应用:
1.九九乘法表:
public class TestNine {
public static void main(String[] args) {
/*
1.嵌套for循环——外层循环控制行数,内层循环控制列数
2.外层循环循环一次,内层循环循环完
*/
for (int i = 1;i <= 9;i ++){
for (int j = 1;j <= i; j ++){
System.out.printf("%d*%d=%-2d ",j ,i,i*j);
}
System.out.println();
}
}
}
2.打印空心三角形:
public class HomeWork4 {
public static void main(String[] args) {
for (int i = 0;i < 10; i ++){
for(int j = 0;j <= i;j ++ ){
if (j == 0 || i == 9 || j == i){
System.out.print("*");
}
else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
3.打印实心等腰三角形:
package com.hqyj.javacode.loop;
public class HomeWork5 {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10 - i; j++) {
System.out.print(" ");
}
for (int k = 0; k < i; k++) {
//if(k == 0 || k == i)
System.out.print("*"+" ");
}
System.out.println(" ");
}
}
}
相关文章
- Java中的Map
- JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)
- Java实现 LeetCode 518 零钱兑换 II
- java中ReentrantLock类的详细介绍(详解)
- Java实现第十届蓝桥杯组队
- 【JAVA】毕向东Java基础视频教程-笔记
- macos:安装java 17.0.6(android studio报错:Unable to locate a Java Runtime.)
- Java核心知识点学习----多线程 倒计时记数器CountDownLatch和数据交换的Exchanger
- 【JAVA】MacBook安装Java环境及eclipse
- Java基础篇3——流程控制
- k8s 通用的java项目迁移流程
- atitit.研发管理--标准化流程总结---java开发环境与项目部署环境的搭建工具包总结
- 华为校招机试 - 发广播(Java & JS & Python)
- Java — java.lang.NullPointerException - 如何处理空指针异常
- 【java】Java中-> 是什么意思?
- 【java】Java教程
- 【java】Java连接mysql数据库及mysql驱动jar包下载和使用
- java新手练习 流程控制break 标签
- Java异常处理面试题归纳
- Java开发技术之成为高级java工程师必须学习的三个技术
- 【刷题记录13】Java工程师丨腾讯面试真题(1)
- 【java】Java 多态