所有的循环无论怎么封装,都会遵循着这是个点,就算用hash的方法也算是迭代器的用法。
只要控制好这四个,那么您循环的功底也就满足了,后期递归啥的也就容易理解了。
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;
}
}
}
如果没有自身改变,那么就会一直循环不停了。
与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()用的不多,就不多做表述了。
和
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 + "%");
}
}
希望能对大家有所帮助。