Java培训班

it2025-02-02  9

Java培训班_Day_03_第一阶段_Java基础语法(三)

课程内容:

三元运算符键盘录入分支结构循环结构

三元运算符

定义和使用

1、元:可以操作的数据或者表达式

2、三元运算符:可以同时操作三个表达式或者数据

3、格式:表达式1 ? 表达式2 : 表达式3

4、说明: (1) 表达式1:必须是布尔类型的值,结果只能是true或者false (2) 表达式2和表达式3根据实际业务逻辑而定

5、执行流程: (1) 执行表达式1 (2) 如果表达式1返回true,执行表达式2,之后三目运算符结束 (3) 如果表达式1返回false,执行表达式3,之后三目运算符结束

代码示例:

public class Demo01_TernaryOperator { public static void main(String[] args) { //有两个int类型的数据,判断数值谁大,最终输出打印较大的值 int a = 3; int b = 5; int result = a > b ? a : b; System.out.println(result); } }

键盘录入

概述

1、键盘录入:在程序运行的过程中,可以让用户录入一些数据,将数据存储到变量中,在后续的步骤对数据做进一步的业务逻辑层面的处理

2、步骤: (1) 导包:import java.util.Scanner; (2) 创建扫描器对象:Scanner sc = new Scanner(System.in); (3) 调用nextInt()方法录入整数:int num = sc.nextInt(); (4) 根据需求对数据做后续处理

代码示例:

package com.Java.demos; import java.util.Scanner; public class Demo03_Scanner { public static void main(String[] args) { System.out.println("请输入一个整数:"); Scanner sc = new Scanner(System.in); //nextInt();只支持录入整数 //nextDouble();可以录入小数 int num = sc.nextInt(); System.out.println("录入的数据为:" + num); } }

流程控制

1、流程:在程序运行的过程中,代码执行的顺序就是流程

2、流程控制:通过某些代码格式来控制代码执行的顺序

3、流程控制的分类: (1) 顺序结构:代码按照从上到下从左到右的书写顺序执行 (2) 分支结构:代码执行到一定程度时,会产生一些分支,每种情况都需要提前准备好,但是真正运行的时候,只会执行其中的某种情况 (3) 循环结构:某些代码需要执行很多遍,我们可以通过循环结构让一句代码重复执行

分支结构

分支结构概述

1、代码执行到一定程度时,会产生一些情况,每种情况都需要提前准备好,但是真正运行的时候,只会执行其中的某种情况

2、实现格式: (1) if (2) if…else (3) if…else if … else if… else (4) switch

if

1、if,关键字,含义:假如,如果

2、定义格式: if(逻辑表达式) { 语句体; }

3、说明: (1) 逻辑表达式:执行结果是布尔类型 (2) 语句体:具体要执行的代码

4、执行流程: (1) 执行逻辑表达式判断,如果返回false,直接结束if语句体 (2) 如果返回true,执行语句体,执行完毕后if语句结束

代码示例:

package com.Java.demos; import java.util.Scanner; public class Demo06_If { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请录入一个数字:"); int num = sc.nextInt(); //判断当前数字是否为偶数,如果是偶数就打印偶数字样 if(num % 2 == 0) { System.out.println("偶数"); } } } if…else

1、else,关键字,含义:否则

2、定义格式: if(逻辑表达式) { 语句体1; } else { 语句体2; }

3、执行流程: (1) 执行逻辑表达式判断,如果返回true,执行语句体1,执行完毕后直接结束if语句体 (2) 执行逻辑表达式判断,如果返回false,执行语句体2,执行完毕后直接结束if语句体

代码示例:

public class Demo07_IfElse { public static void main(String[] args) { //定义一个int变量,判断是奇数还是偶数,打印结果 int num = 13; if(num % 2 == 0) { System.out.println("偶数"); } else { System.out.println("奇数"); } } } if…else if…else if…else if…else

1、定义格式: if(逻辑表达式1) { 语句体1; } else if(逻辑表达式2){ 语句体2; } else if(逻辑表达式3){ 语句体3; } … } else if(逻辑表达式n){ 语句体n; } else { 语句体n + 1; }

2、执行流程: (1) 执行逻辑表达式1,如果返回true,执行语句体1,执行完毕后直接结束if语句体 (2) 执行逻辑表达式1,如果返回false,执行逻辑表达式2,如果为true执行语句体2,为false就继续向下匹配 (3) 如果逻辑表达式1~n都返回false,就执行else的语句体n+1,执行完毕后整个if结束

3、注意事项: (1) 所有的逻辑表达式是按照从上到下匹配的,所以逻辑表达式的逻辑应当不重叠,如果靠前的逻辑表达式包含了后面的逻辑,后面的内容就无法执行了 (2) 不管逻辑表达式匹配返回true还是false,逻辑表达式只要得出了值就意味着执行了

代码示例: import java.util.Scanner; public class Demo08_ManyIfElse { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); if(num == 1) { System.out.println("星期一"); } else if(num == 2) { System.out.println("星期二"); } else if(num == 3) { System.out.println("星期三"); } else if(num == 4) { System.out.println("星期四"); } else if(num == 5) { System.out.println("星期五"); } else if(num == 6) { System.out.println("星期六"); } else if(num == 7) { System.out.println("星期天"); } else { System.out.println("录入有误"); } } } switch语句

1、switch,关键字,含义:开关,每一种情况就像是一扇门,如果匹配到某种情况,就相当于打开了门,如果匹配不到就去匹配下一扇门

2、格式: switch(表达式) { case 常量1: 语句体1; break; case 常量2: 语句体2; break; … case 常量n: 语句体n; break; default: 语句体n+1; }

3、执行流程: (1) 执行表达式,会得到一个结果 (2) 将表达式的结果,按照从上到下的顺序,和每一个case之后的常量去匹配 (3) 如果匹配不到就一直向下匹配 (4) 如果匹配到某个常量,就会执行其语句体 (5) 语句体执行完毕后,就执行break语句,结束整个switch (6) 如果所有case的常量都没有匹配到,就执行deafult中的语句体n+1,执行完毕后遇到右大括号,结束整个switch

代码示例:

import java.util.Scanner; public class Demo11_Switch { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); switch(num) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期天"); break; default: System.out.println("录入有误"); } } } switch 语句的注意事项

1、case,关键字,含义:情况;break,关键字,含义:破坏、退出

2、表达式: (1) JDK5之前:byte、short、char、int (2) JDK5:枚举类型 (3) JDK7:String

3、case之后只能跟常量不能跟变量

4、switch中的每一个模块都可是酌情省略

5、case之后的常量要和表达式保持一个数据类型,并且也要注意表达式数据类型的取值范围

6、表达式的结果只要符合表达式规定的类型即可

7、default:关键字,含义:默认的。除了case意外的所有情况都包含。deafult语句一般情况下默认书写在所有case之后,但是也可以书写在其他位置,不论写在哪里,都是最后才去匹配。甚至可以省略。

8、switch语句的结束标志:遇到break;语句或者遇到右大括号

9、case中的break语句可以省略,如果省略了break,会发生case穿透,即从一个case进去,执行完本case的语句体后直接执行下一个case的语句体。

循环结构

概述

1、对于某些需要重复执行的代码,使用某些格式,让其反复执行,达到简化代码的目的

2、实现的语句: (1) for循环 (2) while循环 (3) do_while循环

for 循环

1、定义格式: for(初始化语句; 逻辑表达式; 步进表达式) { 循环语句体; }

2、执行流程: (1) 执行初始化语句(是一个变量) (2) 执行逻辑表达式,如果返回false,直接结束for循环 (3) 如果返回true,执行循环语句体 (4) 循环语句体执行完毕后,执行步进表达式 (5) 重复步骤(2)

3、说明: (1) 初始化语句是一个变量,也叫做初始化变量,有且仅有一次执行机会,在最开始执行 (2) 逻辑表达式:结果必须为布尔类型。为false循环直接结束,为true就会执行后续代码 (3) 步进表达式:是对初始化变量的一个值的改变操作

代码示例:

public class Demo16_Cycle { public static void main(String[] args) { for(int i = 1; i <= 3; i++) { System.out.println("Java"); } } } for 循环注意事项

1、初始化语句:是一个变量,有且仅有一次执行机会,只在最初执行

2、步进表达式:对初始化变量的值进行修改,可增可减,具体看业务逻辑,并且朝着循环不能执行的方法发展

3、for循环的小括号之后不要加分号

4、当且仅当循环语句体只有一句的时候,可以省略大括号

经典例题

三目运算符(三元运算符)

代码示例:(求最大值)

package com.java.classroom; public class Day_003_01_TernaryOperator { public static void main(String[] args) { int a = 10; int b = 20; int c = 30; int d = 40; int num = (a > b ? a : b) > (c > d ? c : d) ? (a > b ? a : b) : (c > d ? c : d); System.out.println(num); } }

键盘录入

代码示例:(求和)

package com.java.classroom; import java.util.Scanner; public class Day_003_02_KeyboardEntry { public static void main(String[] args) { System.out.print("请输入两个数字:"); Scanner sc = new Scanner(System.in); int num1 = sc.nextInt(); int num2 = sc.nextInt(); System.out.println("录入的数据的和为:" + (num1 + num2)); } }

季节查询问题

方法一:(switch)

代码示例:

package com.java.classroom; import java.util.Scanner; public class Day_003_04_Month { public static void main(String[] args) { System.out.print("请输入月份:"); Scanner sc = new Scanner(System.in); int mon = sc.nextInt(); switch(mon) { case 3: case 4: case 5: System.out.println("这个季节为:春季"); break; case 6: case 7: case 8: System.out.println("这个季节为:夏季"); break; case 9: case 10: case 11: System.out.println("这个季节为:秋季"); break; case 12: case 1: case 2: System.out.println("这个季节为:冬季"); break; default : System.out.println("录入有误"); } } }

方法二(if…else)

代码示例:

package com.java.classroom; import java.util.Scanner; public class Day_003_04_Month1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int mon = sc.nextInt(); if(3 <= mon && mon <= 5) { System.out.println("春季"); }else if(6 <= mon && mon <= 8) { System.out.println("夏季"); }else if(9 <= mon && mon <= 11) { System.out.println("秋季"); }else { System.out.println("冬季"); } } }

成绩分类问题

代码示例:

package com.java.classroom; import java.util.Scanner; public class Day_003_05_Student { public static void main(String[] args) { System.out.print("请输入你的成绩:"); Scanner sc = new Scanner(System.in); int grade = sc.nextInt(); if(0 <= grade && grade <= 100) { if(90 <= grade && grade <= 100) { System.out.println("优秀"); }else if(80 <= grade && grade < 90) { System.out.println("良好"); }else if(60 <= grade && grade < 80) { System.out.println("及格"); }else { System.out.println("不及格"); } }else { System.out.println("您的输入有误!"); } } }

1-100 之间的数字相加

代码示例:

package com.java.classroom; public class Day_003_07_Add { public static void main(String[] args) { int sum = 0; for(int num = 1; num <= 100; num++) { sum += num; } System.out.println(sum); } }

经典99乘法表

代码示例:(两个for循环实现)

package com.wanghong.homework; public class Day_003_Homework1 { public static void main(String[] args) { for(int a = 1; a <= 9; a++) { for(int b = 1; b <= a; b++) { System.out.print(b + "*" + a + "=" + a*b + " "); } System.out.println(); } } }

代码示例:(一个for循环实现)

package com.wanghong.homework; public class Day_003_Homework { public static void main(String[] args) { //a是被乘数,b是乘数 for(int a = 1, b = 1; b <= 9; a++) { System.out.print(a + "*" + b + "=" + a*b + " "); if(b == a) { a = 0; b++; System.out.println(); } } } }

拆分四位数上的个十百千位

代码示例:

package com..demo; public class Day_003_Demo_01 { public static void main(String[] args) { int i = 3287; int one = i % 10; int ten = i / 10 % 10; int hun = i / 10 / 10 % 10; int tho = i / 10 / 10 / 10; System.out.println("个位是:" + one + " 十位是:" + ten + " 百位是:" + hun + " 千位是:" + tho); } }

四叶玫瑰数问题 package com..demo; public class Day_003_Demo_01 { public static void main(String[] args) { for(int num = 1000; num <=9999; num++) { int one = num % 10; int ten = num / 10 % 10; int hun = num / 10 / 10 % 10; int tho = num / 10 / 10 / 10; if(num == one*one*one*one + ten*ten*ten*ten + hun*hun*hun*hun + tho*tho*tho*tho) { System.out.println(num); } } } }

1 - 100 之内遇 9 跳过,五个换行

代码示例:

package com..demo; public class Day_003_Demo_01 { public static void main(String[] args) { int count = 0; for(int num = 1; num <=100; num++) { int one = num % 10; int ten = num / 10; if(one != 9 && ten != 9) { System.out.print(num + " "); count++; if(count % 5 == 0) { System.out.println(); } } } } }

今天的学习就到这里结束了,相比于昨天大量的记忆,今天的逻辑思考更多了一点,要想成为一名优秀的程序员,还是要多敲代码,多多写程序!

最新回复(0)