while do while for
- while 先判断,后执行循环,至少一个boolean判断结果
两个关键字 :break退出循环,往往配合控制语句判断条件的
continue退出当次循环 - do while 先执行一次循环,然后判断,俗称倒while循环
- for 循环判断条件为真,然后执行循环。
- 要求倒叙99,要求第一不能有break,第二用do while
开发项目的错误
- 语法错误,红线,第一时间修改,更多针对的是java程序
- 抛异常,exception,运行时错误,提示错误的类型和行数 at…
- 逻辑错误没有任何提示,结果不符合需求的要求
- 维护错误项目发布客户服务器提示的错误信息
案例
-
奇偶数各自之和为例的需求分析:从if判断奇偶数条件入手的
(1)100以内,循环在0-100 循环101次
(2)创建奇偶数的判断条件,偶数判断:if(index%2==0)
(3)各自之和,首先在循环之外创建两个各自的int变量
int index=0,ji=0,ouo=0; while (index<=100) { if(index%2==0) { System.out.println("偶数"+index);//50 ouo+=index; }else { ji+=index; } index++; } System.out.println("奇数"+ji+",偶数:"+ouo);
-
从while的index索引的变化入手:
(1))100以内,循环在0-100 循环101次
(2)索引的变化长度就不是1了,是 index=index+2;
(3)各自之和,首先在循环之外创建两个各自的int变量ouo+=index;int index=0,ouo=0; while (index<=100) { ouo+=index; index=index+2; } int ji=0; index=1; while (index<=100) { ji+=index; index=index+2; } System.out.println("奇数"+ji+",偶数:"+ouo
案例延伸
- 直至用户控制台输入一个合法的数字为止
int u=0; //导入控制台输入的操作对象,并且实例化,并且构造函数赋值当前操作系统对象 Scanner sca=new Scanner(System.in); int number=0; boolean condition=true; //判断输入的数字是0-10,否则视为非法的数字 do { System.out.println("input number:"); number=sca.nextInt(); if(number>=0 && number <11) { ystem.out.println("合法的数字"); condition=false; }else { System.out.println("输入的数字非法,重新输入"); } } while (condition); System.out.println("继续后续功能....."); }
for语法
- for必须()内需要两个分号
(1)for完成一个死循环 for (;😉 {}
(2)for (变量声明可以多个;条件判断结果只有一个结果; 判断趋向也可以是多个)
(3)for ( : ) {} 适合数组和集合操作遍历的,但是不能独立存在
for循环案例
-
二者相向而行,从a到b的距离是100,a到b的速度是每秒1米,b到a的速度是每秒2米
int a=0,b=100;
for(;a<=b;a++,b-=2){
System.out.println(a+"-"+b);
} -
1 1 2 3 5 8…求出第20个数字?
int a = 1, b = 1, c = 0; for (int i = 1; i <= 18; i++) { c = a + b; a = b; b = c; System.out.println(c); }
-
1 2 4 7 11 16…求出第20个数字?
int arr[ ]=new int[20];
arr[0]=1;
for(int i=1;i<arr.length;i++) {
arr[i]=arr[i-1]+i;
}
System.out.println("第20项为:"+arr[19]);
九九乘法表
-
需求分析:
(1)显示的效果是一个直角三角形,那就说明需要一个循环来嵌套
(2)纵向的打印每行递减(或者递增)1,也就是纵向的循环打印过程中是有规律的
(3)首先用矩阵嵌套,然后完成直角三角形的搞定,递减(递增)1的规律搞定
a. 外层循环负责纵向的循环执行,内嵌循环负责横向打印执行,所以显示结果为矩阵、矩形
b.如果显示不是一个规则的矩形,那么分析横纵的是否有规律,比如直角三角形
for (int i = 0; i < 7; i++) {//直角三角形纵向7行
for (int j = 7-i; j > 0; j–) {//内嵌循环每行递减1次循环
c.循环逻辑思维的灵活性体现之一就是++未必是递增,–未必是递减
for (int i = 0; i < 7; i++) {//直角三角形纵向7行
for (int j = 0; j < 7-i; j++) {
和上面结果是一样的,是循环的方向变化的
(4)虽然是有规律的横纵,但是长度是固定的,不需要breakint i,j; for(i=9;i>=1;i--){ for( j=i;j>0;j--){ System.out.print(i+"*"+j+"="+(j*i)+" "); } System.out.println(); }
菱形
- 需求分析
(1)控制台上执行打印了 4个三角形, 2个空格直角三角形,为了形成菱形的等腰效果,2个等腰三角形
(2)需要上下两个for完成,而每一个for又都嵌套两个for完成.每一个外层的for负责纵向打印,每一个内嵌的for负责自身区域的横向打印。
for(int i){
for(int j){
A
}
// 纵向循环执行的每一次循环,都会执行一行的A 直角三角形打印,和一行的C等腰三角形的打印。依此类推,A的每行循环都会纵向递减1,等腰都会递增2.
for(int n){
C
}
}
//纵向循环每次循环,都会执行一套内嵌循环横向一行的打印执行
//j n受限于i的变化而有规律的变化的。也是菱形的一大难度,
j:直角 n等腰
i j n
0 5 1
1 4 3
2 3 5
3 2 7
4 1 9
5 0 11
j=4-i
n= 2 - 代码
//上半部分:
for(int i=0;i<5;i++){
for(int j=1;j<5-i;j++){
System.out.print(" ");
}
for(int k=0;k<2*i+1;k++){
System.out.print("*");
}
System.out.println();
}
//下半部分
for(int i=4;i>0;i--){
for(int j=0;j<=4-i;j++){
System.out.print(" ");
}
for(int k=1;k<2*i;k++){
System.out.print("*");
}
System.out.println();
}
空心菱形
-
⭐所在循环判断当前循环的最大最小值,执行打印*,否则打印空格
-
//上半部分: for(int i=0;i<5;i++){ //第一个for循环 for(int j=1;j<5-i;j++){ System.out.print(" "); } //第二个for循环 for(int k=0;k<2*i+1;k++){ if(k==0||k==2*i){//空心的话,这个等腰三角形的第一个数跟最后一个数都是*,其余的换成空格 System.out.print("*"); }else{ System.out.print(" "); } } System.out.println(); } //下半部分: for(int i=4;i>0;i--){ //第一个for循环 for(int j=0;j<=4-i;j++){ System.out.print(" "); } //第二个for循环 for(int k=1;k<2*i;k++){ if(k==1||k==2*i-1){ System.out.print("*"); }else{ System.out.print(" "); } } System.out.println(); }