一.判断语句
-
if-else判断
格式:
if(判断条件){ //条件成立执行语句 }else{ //条件不成立执行语句 }
条件是一个表达式,此表达式的值可以为真或假.如果条件的值为真,则执行if下的语句块;如果条件的值为假,则执行else下的语句块.
练习示例:
public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("输入第一个值:"); int a = scanner.nextInt(); System.out.println("输入第二个值:"); int b = scanner.nextInt(); //判断a和b哪个数值大 //如果a大于b,则输出a的值;如果a不大于b,则输出b的值 if(a>b){ System.out.println(a); }else{ System.out.println(b); }
-
多重if结构
格式:
if(条件1){ 语句块 }else if(条件2){ 语句块 }else if(条件3){ 语句块 }... else{ 语句块 }
在进行条件判断时,如果条件的值为真,则执行某些操作,否则,进一步进行条件判断,执行其他操作;
多重if结构实际上是if-else结构的两一种形式;if-else-if,这种称为阶梯式,当有多个分支选择时,可采用多重if结构.
练习示例:
问题:根据学生的考试分数分别输出优(90~100分),良(80~90分),中(60~80分),差(小于60分)四个等级,需要逐级判断学生考试分数在哪个分数阶段,并输出相应的等级.
public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("输入学生成绩:"); int score = scanner.nextInt(); if(score<=100 && score>90){ System.out.println("该学生分数为:"+score+"优秀!"); } else if (score<=90 && score>80) { System.out.println("该学生分数为:"+score+"良好!"); } else if (score<=80 && score>=60) { System.out.println("该学生分数为:"+score+"中等!"); } else if (score<60) { System.out.println("该学生分数为:"+score+"差!"); }else{ System.out.println("成绩输入有误"); } }
-
嵌套if结构
格式:
if(前提条件){ if(后续条件1){ 语句块1 }else{ 语句块2 } }else{ 语句块3 }
除了使用简单if和多重if之外,还可以将整个if块插入到另一个if块中,这种结构称为嵌套if.嵌套if主要用于只有当前条件满足时,才判断后续条件是否满足的情况.
练习示例:
问题:一个活动计划的安排如果今天是工作日,则去上班,如果今天是周末,则外出游玩,如果周末天气晴朗,则去室外游乐场玩,否则去室内游乐场玩.
示例一: /** * 问题:一个活动计划的安排如果今天是工作日,则去上班,如果今天是周末,则外出游玩,如果周末天气晴朗,则去室外游乐场玩,否则去室内游乐场玩. * //思路: * 1.先判断今天是工作日还是周末; * 2.如果是周末,在判断一下天气是否晴朗 * 如果晴朗,则去室外玩; * 如果不晴朗,则去室内玩; */ Scanner scanner=new Scanner(System.in); System.out.println("输入今天周几:"); String next = scanner.next(); //进行判断是工作日还是周末 if(next.equals("周一")){ System.out.println("去上班"); } else if (next.equals("周二")) { System.out.println("去上班"); }else if (next.equals("周三")) { System.out.println("去上班"); }else if (next.equals("周四")) { System.out.println("去上班"); }else if (next.equals("周五")) { System.out.println("去上班"); }else if (next.equals("周末")) { //输入今天的天气 System.out.println("输入今天的天气:"); String next1 = scanner.next(); if(next1.equals("晴朗")){ System.out.println("去室外游乐场玩^^~"); }else{ System.out.println("去室内游乐场玩^^~"); } }else { System.out.println("输入有误!!"); } 示例二: /** * 问题:要求用户输入两个数值,通过嵌套if结构判断两个数值的大小,并输出相应信息. * 思路: * 1.先创建输入对象Scanner,能键盘录入两个值 * 2.使用if判断语句判断两个值是否相等 * 3.如果不相等,则再使用if进行判断两个值哪个大,输出大的值 * 4.如果相等则输出提示语句 */ Scanner scanner=new Scanner(System.in); System.out.println("输入第一个值:"); int a = scanner.nextInt(); System.out.println("输入第二个值:"); int b = scanner.nextInt(); //先进行判断a和b是否相等 if(a!=b){ //判断a是否大于b if(a>b){ System.out.println("第一个值比较大:"+a); }else { System.out.println("第二个值比较大:"+b); } }else { System.out.println("两个值相等:"+a+"="+b); } }
二.循环语句
什么是循环结构?
循环结构是计算机程序设计中的一种常见的控制流程结构,用于重复执行某段代码块,直到满意退出条件为止.循环由循环条件和循环体组成.
循环条件是一个逻辑表达式,在每次循环开始时判断其是否满足退出条件,如果满足则跳出循环,否则继续执行循环体,循环体是一段需要重复执行的代码块,通常包括多条语句.
循环结构可以通过计算器,标志变量,布尔表达式等方式来实现不同的循环控制方式.在编程中,使用循环结构可以简化代码逻辑,提高代码复用性和可读性,同时也可以实现很多复杂的算法和数据处理任务.
1.while循环
用于执行不定次数的循环,条件表达式在循环开始时进行判断,如果为true则执行循环体,否则跳过循环.
格式:
初始表达式1 while(判断条件2){ //表达式3 } 执行顺序:123->23->23->...
练习示例:
public static void main(String[] args) { /** * 问题:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米,请问,我折叠多少次,可以折成珠穆朗玛峰的高度? * 思路: * 1.先把已知的变量定义出来:珠峰的高度,纸的厚度,折叠次数从零开始; * 2.使用while循环条件是纸的厚度小于等于珠峰的高度 * 3.纸张每次折叠是上次厚度的两倍 * 4.每折叠一次count就自增 * 5.输出需要折叠的次数 */ double zhi=0.1; int feng=8844430; int count=0; while (zhi<=feng){ zhi*=2; count++; } System.out.println(count); }
2.do..while循环
与while循环类似,不同之处在于它会先执行一次循环体再进行条件判断是否满足,至少会执行一次循环体.
格式:
初始表达式1 do{ 循环体2 }while(条件表达式3); //执行顺序:12->32->32->32->...
练习示例:
public static void main(String[] args) { /** * 在控制台输出10个数 */ int count=1; do{ System.out.println(count); count++; }while (count<=10); }
3.for循环
用于循环执行已知次数的代码块,通常使用计数器来控制循环次数.
格式:
for(初始表达式1;条件表达式2;步进表达式4){ //循环体3 } 执行顺序:1234->234->234->234->...
说明:
-
初始化语句:用于表示循环开启式的起始状态,简单说就是循环开始的时候什么样.
-
条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去.
-
循环体语句:用于表示循环反复执行的内容,简单说就是循环反复执行的事情.
-
条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去.
练习示例:
package com.statement.loopStatement; public class TestLoopStatement { /** * 问题:求1~100之间的数据和,并把求和的结果输出在控制台 * 思路: * 1.先定义一个变量接收总和 * 2.写一个小于等于100的for循环 * 2.把循环取出来的数值进行相加 * 3.在控制台输出 * */ public static void main(String[] args) { //先定义一个变量接收总和 int sum=0; //开始循环 for (int i = 0; i <= 100; i++) { //把循环的每个数值进行相加 sum+=i; } //在控制台输出总和 System.out.println(sum); } }
4.增强for循环
用于遍历集合或数组中的元素,可以省略初始化,判断和更新三部分,语法简洁.
格式:
for(数据类型 变量名:集合/数组){ 循环体代码 }
其中数据类型标识数组或集合中元素的类型,变量名表示当前遍历到的元素的变量名,数组名或集合名表示要遍历的数组或集合对象.在循环体内部,可以通过变量名来访问当前遍历到的元素,执行相应的操作.
练习示例:
public static void main(String[] args) { /** * 计算数组中所有元素的和 */ int[] arr={1,6,3,8,4,9}; int sum=0; for (int i : arr) { sum+=i; } System.out.println(sum); }
5.break和continue语句
break用于跳出循环,continue用于跳过本次循环,这两个语句通常与循环结构配合使用.
6.嵌套循环
将一个循环结构放在另一个循环结构内部,可以实现多层循环嵌套,通常应该尽量避免使用过多层嵌套循环,可以提高程序效率.
格式:
for(初始化表达式1; 循环条件2; 步进表达式7) { for(初始化表达式3; 循环条件4; 步进表达式6) { 执行语句5; } }
练习示例:
public static void main(String[] args) { /** * 问题:在控制台打印九九乘法表 * 思路: * 1.先写一个循环控制最外层,从1开始小于等于9 * 2.在控制循环的内层再写一个循环,从1开始最大小于等于i * 3.进行输出i*j的值 不进行换行 * 4.当外层循环一圈之后再进行换行 */ for (int i = 1; i <= 9; i++) { for (int j = 1; j <=i ; j++) { System.out.print(j+"*"+i+"="+i*j+" "); } System.out.println(); } }
7.死循环
死循环:也就是循环中的条件永远为true,死循环的是用不结束的循环.
三种格式:
第一种: for(;;){} 第二种: while(true){} 第三种: do{}while(true);