今日内容
零、 复习昨日
一、作业
二、循环
三、控制语句关键词
四、总结
零、 复习昨日
见晨考
一、作业
package com.qf.homework;/** * --- 天道酬勤 --- * * @author QiuShiju * @desc */public class Demo2 { public static void main(String[] args) { // 水仙花是一个三位数, // 这个数的个位的立方+十位的立方+百位的立方==他本身: // 153 = 27+125+1 int num = 153; int ge = num % 10; // System.out.println(ge ); int shi = num / 10 % 10; // System.out.println(shi ); int bai = num / 100; // System.out.println(bai ); if (ge*ge*ge + shi*shi*shi + bai*bai*bai == num) { System.out.println(num+"是水仙花数" ); } else { System.out.println(num+"不是水仙花数" ); } System.out.println("---------------" ); int i = 100; while (i < 1000) { int g = i % 10; int s = i / 10 % 10; int b = i / 100; if (g*g*g + s*s*s + b*b*b == i) { System.out.println(i+"是水仙花数" ); } i++; } System.out.println("-------------" ); // 输入任何一个数字,倒着输出每一位数字 /** * 153 * 153 % 10 = 3 * 153 / 10 % 10 = 5 * 153 / 10 /10 % 10 = 1 * * 1453 * 1453 % 10 = 3 * 1453 / 10 % 10 = 5 * 1453 / 10 /10 % 10 = 4 * 1453 / 10 / 10 / 10 % 10 = 1; * * 14567 * 14567 % 10 = 7; * 14567 / 10 % 10 = 6; * 14567 / 10 / 10 % 10 = 5; * 14567 / 10 / 10 /10 % 10 = 4; * 14567 / 10 / 10 /10 /10 % 10 = 1; */ int n = 345678; while (n > 0) { int w = n % 10; System.out.println(w ); n = n / 10; } System.out.println("----------------" ); // 求得一个数是几位数? // 分析:将这个数循环除以10记录运算了几次 int x = 1234567; int count = 0; while(x > 0){ x = x / 10; count++; } System.out.println(count+"位数" ); }}
二、循环
实现代码重复执行–循环
- while
- do-while
- for
复习
while(布尔表达式) { // 执行语句}// 先判断while,如果结果是true就执行循环体// 执行完后继续返回判断布尔表达式,如果再为true继续执行// 只有当while后条件判断为false时跳过循环不再执行
while循环又叫
当型循环
2.1 do-while[了解]
语法
do { // 执行内容 }while(布尔表达式);/*1 先执行一次do内的代码2 然后再执行while后的判断3 如果结果是true,就继续执行do内的代码4 直到while后的条件为false时跳过循环-----(先斩后奏)*/
do-while又叫
直到型循环
package com.qf.loop;/** * --- 天道酬勤 --- * * @author QiuShiju * @desc 演示do-while循环 */public class Demo3 { public static void main(String[] args) { /** * do{ * // 内容 * }while(条件); */ // 输出1-10 int i = 1; do { System.out.println(i ); i++; }while (i < 11); // 输出1-100的偶数 int j = 1; do{ if (j % 2 == 0) { System.out.println(j ); } j++; }while (j < 101); }}
总结: while和do-while异同
- 一样的是都可以循环
- 不一样
- while先判断后执行
- do-while先执行一次再判断
- 即使条件不成立,do-while也会执行一次
2.2 for循环[重要]
语法:
for(初始值;条件;迭代){ // 循环体}
练习
package com.qf.loop;/** * --- 天道酬勤 --- * * @author QiuShiju * @desc for循环 */public class Demo4 { public static void main(String[] args) { /** * for(初始值;条件;迭代){ * // 执行语句 * } */ // 输出1-10 " /> // } // 输出10-1 int i; for(i = 10;i > 0;i--) { System.out.println(i ); } System.out.println(i ); // 输出1-100的偶数 for(int j = 1;j < 101;j++) { if (j % 2 == 0) { System.out.println(j ); } } for(int j = 2;j < 101;j+=2) { System.out.println(j ); } // 输出1-100的和 int sum = 0; for(int j = 1;j < 101;j++) { //sum = sum + j; sum += j; } System.out.println("1-100的和"+sum ); // 输出1-100的奇数和 // 输出1-100的偶数和 int oddSum = 0; // 奇数和 int evenSum = 0; // 偶数和 int sum2 = 0; // 总和 for (int j = 1;j < 101;j++) { if (j % 2 == 0) { evenSum += j; } else { oddSum += j; } sum2 += j; } System.out.println("奇数和:" + oddSum+",偶数和:"+evenSum +",总和:"+ sum2); // 使用for循环完成水仙花数 }}
2.2 for嵌套
package com.qf.loop;/** * --- 天道酬勤 --- * * @author QiuShiju * @desc */public class Demo5 { public static void main(String[] args) { /** * ******** * ******** * ******** * ******** */ // 外面控制行 for (int i = 1; i < 6; i++) { // 控制每行中的列 for (int j = 1; j < 10; j++) { System.out.print("*"); } System.out.println( ); } System.out.println("----------------" ); for (int i = 1; i < 5; i++) { for (int j = 1; j < 9; j++) { System.out.print("*" ); } System.out.println( ); } System.out.println("----------" ); /** * * * ** * *** * **** * ***** * ****** * ******* */ // 外层循环控制行数 for (int i = 1; i < 8; i++) { // 内存循环控制列数 for (int j = 1; j <= i; j++) { System.out.print("*" ); } System.out.println( ); } /** * 99乘法口诀表 * 1*1=1 * 1*2=2 2*2=4 * 1*3=3 2*3=6 3*3=9 * .... */ for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { System.out.print(j+" * "+i+" = "+(i * j)+"\t"); } System.out.println( ); } System.out.println("-------------" ); /** * * * *** * ***** * ******* * ********* * .....n 2n-1 */ for (int i = 1; i < 6; i++) { for (int j = 1; j <= 2*i-1; j++) { System.out.print("*" ); } System.out.println( ); } }}
for循环嵌套的重点: 要理解代码的执行顺序
三、控制语句关键词[熟悉]
在流程控制语句内使用的一些关键词,也可以实现控制流程语句的执行
- break
- continue
3.1 break
break 破坏/中断/打断
- break可以用在switch中
- break可以用在循环中
使用场景1: 在switchcase中用来重点switch执行
使用场景2: 在循环中使用,用来中断循环,循环不再执行
package com.qf.loop;import java.util.Scanner;/** * --- 天道酬勤 --- * * @author QiuShiju * @desc break关键词 */public class Demo6 { public static void main(String[] args) { /** * break * 中断当前层循环 */ for (int i = 1; i < 11; i++) { if (i == 5) { break; // 中断循环 } System.out.println(i ); } System.out.println("for后" ); for (int i = 1; i < 11; i++) { for (int j = 1; j < 11; j++) { if (j == 5) { break; } System.out.print("j = " + j ); } System.out.println("i = " + i ); System.out.println( ); } System.out.println("--------" ); // Scanner scanner = new Scanner(System.in); // while(true) { // System.out.println("请输入年龄:"); // int age = scanner.nextInt( ); // if (age == 886) { // System.out.println("再见~" ); // break; // } // if (age >= 18) { // System.out.println("可以考驾照"); // } else { // System.out.println("不可以考"); // } // } /** * 次数已知,用for * 次数未知,用while */ /** * ATM机取钱: * 假设密码是数字123,允许输入3次 * 如果输入正确,直接进入,给出提示:欢迎使用天地银行 * 如果不正确,继续下一次输入 * 如果三次都不对,给出提示: 卡已锁死,请联系客服~ */ Scanner scan = new Scanner(System.in); System.out.println("欢迎使用<>" ); for (int i = 1; i < 4; i++) { System.out.println("总共3次机会,正在第"+i+"次输入,请输入密码:" ); int password = scan.nextInt( ); if (password == 123) { System.out.println("欢迎登录~" ); // 登录成功,中断循环 break; } else { System.out.println("密码错误" ); } // 循环3次,都没有执行上方的break,说明3次都密码错误 if (i == 3) { System.out.println("已输错3次,卡锁死,联系客服" ); } } }}
3.2 continue
continue 继续,该关键词只能在循环中使用
package com.qf.loop;/** * --- 天道酬勤 --- * * @author QiuShiju * @desc */public class Demo7 { public static void main(String[] args) { /** * continue 继续 * 打断本次循环,继续下次循环 */ for (int i = 1; i < 11; i++) { if (i == 6) { continue; } System.out.println(i ); } System.out.println("-----------" ); // 逢七过 for (int i = 1; i < 101; i++) { // 每10个数换行 if (i % 10 == 0) { System.out.println( ); } // 7的倍数 || 个位是7 || 十位是7 if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) { System.out.print("过 "); continue; } System.out.print(i+" "); } // 找出1-100以内含7的数 }}
四、总结
1 小技巧: 利用java的除法。除以一个数是取整不保留小数2 循环就是为了解决代码重复问题 while dowhile for3 for循环语法,执行流程4 for循环嵌套执行流程5 break 打断switch,循环 continue 打断循环,继续下次循环
作业
1 重复2遍2 有时间记笔记3 背单词4
附录
count 技术loop 循环odd 奇数even 偶数password 密码continue 继续for 为了alt + / 提示代码