开篇主旨——循环四要素
初始值
表达式
循环体
迭代器
所有的循环无论怎么封装,都会遵循着这是个点,就算用hash的方法也算是迭代器的用法。
只要控制好这四个,那么您循环的功底也就满足了,后期递归啥的也就容易理解了。
while循环
while:中文叫【当…时】,其实就是当条件满足时就执行代码,一旦不满足了就不执行了。
语法:while (条件) { 满足条件就执行 }
因为满足条件就执行,所以我们写的时候一定要注意,就是设定一个边界值,不然就一直循环下去了。也就是说控制好【表达式】与【迭代器】即可。
package Action; public class demo { public static void main(String[] args) { // 1. 初始化条件 int num = 0; while (num < 10) {//2. 条件判断 // 3. 要执行的代码 System.out.println(num); // 4. 自身改变 num = num + 1; } } }
如果没有自身改变,那么就会一直循环不停了。
do{}while()循环
与while循环的区别就是,无论表达式是否成立,都会进行一次判断。
package Action; public class demo { public static void main(String[] args) { int a = 0;//初始值 do{ //循环体 System.out.println(a); a++;//迭代器 } while (a<10);//表达式 } }
由于do{}while()用的不多,就不多做表述了。
for循环(重点)
和 while 和 do while 循环都不太一样的一种循环结构
道理是和其他两种一样的,都是循环执行代码的
语法格式如下:
for (int i = 0; i < 10; i++) { System.out.println(i); }
那么,for循环的四要素是否齐全呢,其实一眼便可以区分出来,都是很明显的。
for的用法也有很多,各种变化初始值,正序,倒序都可以执行。
强化循环练习:
package Action; import java.util.Scanner; public class demo { @SuppressWarnings("resource") public static void main(String[] args) { // 1盈盈为了考验令狐冲夺冠的决心,要他说一百遍“我能行!” // int i = 100; // while (i > -1) { // System.out.println("我能行!!!!"); // i--; // } // // 2.本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少?(用double存储) // double money = 10000; // byte i = 0; // while (i < 5) { // money += money * 0.003; // System.out.println(money); // i++; // } // // 3. 计算出1—100之间所有能被3整除的整数的和? // int i = 100; // int sum = 0; // while (i >= 0) { // if (i % 3 == 0) { // // sum += i; // } // i--; // } // System.out.println(sum); // // 4. 计算1000以内所有不能被7整除的整数之和? // int i = 1000; // int sum = 0; // while (i >= 0) { // if (i%7 != 0) { // sum += i; // } // i--; // } // System.out.println(sum); // // // 5.用while做 求10到20的累加和 // int i = 10; // int sum = 0; // while (i<=20){ // sum += i; // i++; // } // System.out.println(sum); // // 6. 找出一个数的所有因子数 // Scanner sc = new Scanner(System.in); // System.out.print("请输入一个数"); // int num = sc.nextInt(); // int i = 1; // if (num == 0) { // System.out.println("你的因子数为0"); // } else { // while (i <= num/2) { // if (num % i == 0 ) { // System.out.println(i); // } // i++; // } // } // // 7. 输入一个数,判断这个数是否是素数; // Scanner in = new Scanner(System.in); // System.out.print("请输入一个数字:"); // int x = in.nextInt(); // int i = 2; // if (x == 1 || x == 0) { // System.out.println("不是素数"); // } // boolean isf=true; // while (i < x) { // if (x % i == 0) { // isf=false; // break; // } // i++; // } // System.out.println(isf?"素数":"不是素数"); // 8 定义一个正整数如:1205 统计它的各位数字中零的个数,并求各位数字中的最大者。 // Scanner sc = new Scanner(System.in); // System.out.print("请输入一个正整数:"); // int num = sc.nextInt(); // int max = 0; //最大值 // int count = 0; // 计数 // while (num > 0) { // int j = num % 10; // if (j == 0) { // count++; // } else { // if (j > max) { // max = j; // } // } // num /= 10; // } // System.out.println("最大值是" + max + " 零一共有" + count + "个"); // // 9 有1020个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的一半多两个,问几天以后能卖完 // int sum =1020; // int count=0; // while (sum!=0) { // sum=sum/2-2; // count++; // } // System.out.println(count+"天"); // 10猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃一个,以后每天都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子。求第一天共摘了多少个? // int sum=1;//最后一天的一个 // int half=0;//用于计算昨天的 // int i=0;// // while (i<9) {//9天循环9次,第十天1个初始值 // half=(sum+1)*2; // sum=half; // i++; // } // System.out.println(half); // 11判断一个数是否是完全数(完数指的是一个数的所有因子数的和等于这个数本身,例如 6=1+2+3,即6就是完全数) // int num = 6; // int sum=0; // for (int i = 1; i < num; i++) { // if(num%i==0) { // sum+=i; // } // } // if(sum==num) { // System.out.println(num+"是完数"); // } // 12.循环录入某学生5门课的成绩并计算平均分,如果某分数录入为负,停止录入并提示录入错误(使用break) // int[] arr = new int[5]; // Scanner sc = new Scanner(System.in); // for (int i = 0; i < 5; i++) { // arr[i] = sc.nextInt(); // if (arr[i] < 0) { // break; // } // } // for (int i = 0; i < arr.length; i++) { // System.out.println(arr[i]); // } // 13.循环录入Java课的学生成绩,统计分数大于等于 80分的学生比例(使用continue) Scanner sc = new Scanner(System.in); System.out.println("班级总人数"); int count = sc.nextInt(); // 每个人的成绩 int oneNum = 0; // 统计班级里Java成绩大于80的人数 int num = 0; // 循环录入每个人的Java成绩 for (int i = 1; i <= count; i++) { System.out.println("请输入第" + i + "个同学的成绩:"); oneNum = sc.nextInt(); if (oneNum < 80) { continue;// 小于80分跳过 } num++; } // 计算大于等于80的学员比例 System.out.println("80分以上的学生人数为:" + num); // 计算大于80分的学生所占百分比 double result = (double) num / count * 100; System.out.println("80分学员所占百分比:" + result + "%"); } }
希望能对大家有所帮助。