1、顺序结构 按照代码书写的顺序一行一行执行
System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
// 执行结果
// aaa
// bbb
// ccc
System.out.println("aaa");
System.out.println("ccc");
System.out.println("bbb");
// 执行结果
// aaa
// ccc
// bbb
2、分支结构(条件)
(1)*** if 语句
A、 考90分以上奖励鸡腿
int score = 92;
if(score >= 90) { // 格式1 if (布尔表达式){
System.out.println("吃个大鸡腿!"); // 语句
} // }
// 正确 吃个大鸡腿!
B、考90分以上奖励鸡腿,否则没有鸡腿
int score = 92;
if(score >= 90) { // 格式2 if(布尔表达式){
System.out.println("优 秀,吃个大鸡腿!"); // 语句1
}else { // } else {
System.out.println("不优秀,不吃大鸡腿!"); // 语句2
} // }
// 92 优 秀,吃个大鸡腿!
// 82 不优秀,不吃大鸡腿!
C、给学生的成绩判定等级
int score = 80;
if(score >= 90){ //格式3 if (布尔表达式1){
System.out.println("优秀"); // 语句1
}else if(score >= 80 ){ // } else if (布尔表达式2){
System.out.println("良好"); // 语句2
}else if(score >= 70 ){ // } else {
System.out.println("中等"); // 语句3
}else if(score >= 60 ){ // }
System.out.println("及格");
}else if(score >= 0 ){
System.out.println("不及格");
}else{
System.out.println("错误数据");
}
// 90 优秀
// 80 良好
// 70 中等
// 60 及格
// 50 不及格
// -6 错误数据
D、判断一个数字是奇数还是偶数
int num = -9;
if (num % 2 == 0){ // 若为 if (num % 2 != 1),不可以用1判断
System.out.println("num 是偶数"); //逻辑不等价,当为负数时会出错,例如-5会被判定为偶数
} else {
System.out.println("num 是奇数");
}
// 10 num 是偶数 // 当用1来判断( -5 num 是偶数 ) 得到一个错误判断
// 9 num 是奇数 // 考虑情况时应该思考是否考虑周全
E、 判断一个年份是否为闰年
int year = 2000;
if (year % 100 == 0) { // 判定世纪闰年
if (year % 400 == 0) { // 能被100整除并且能被400整除
System.out.println("是世纪闰年");
} else {
System.out.println("不是世纪闰年"); // 不是闰年,能被100整除并且不能被400整除
}
} else { // 普通闰年
if (year % 4 == 0) { // 不能被100整除并且能被4整除
System.out.println("是闰年");
} else {
System.out.println("不是闰年"); // 不是闰年,不能被100整除并且不能被4整除
}
}
// 2000 是世纪闰年; 1800 不是世纪闰年;
// 2008 是闰年; 2002 不是闰年;
(2)*** switch 语句
int day = 2;
switch(day) { // switch (表达式) {
case 1: // case 常量值1:
System.out.println("星期一"); // 语句1;
break; // break;
case 2: // case 常量值2:
System.out.println("星期二"); // 语句2;
break; // break;
case 3: // ......
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default: // default : {
System.out.println("输入有误"); // 上面内容都不满足时执行的语句
break; // break;
} // }
// 1 星期一; 10 输入有误;
// 当没有break会继续打印,比如:case 1中没有break,结果: 1 星期一
// 星期二
3、循环结构
(1) *** while 循环
A、 打印1-10的数字
int num = 1;
while (num <= 10){ // while (布尔表达式){
System.out.println(num); // 循环语句
num++;
} // }
B、 计算1-100的和
int i = 1;
int sum = 0;
while (i <= 100) {
sum += i; // 等价于 sum = sum +i;
i++;
}
System.out.println(sum);
// 结果 5050 //考虑到效率,最好采用高斯公式 (1 + 100)* 100 / 2
// 若想求1——n的和,可以改动两处 1、 增加 int n = 某值 2、修改 while (i <= n)
C、计算1 * n的和 (若n为6,即为6!)
int i = 1;
int result = 1; //与加法有所不同,此时为1;
int n = 6;
while (i <= n){
result *= i; // 等价于 result = result * i;
i++;
}
System.out.println(result);
// 结果 720
D、计算1! + 2! + 3! + 4! +5!
int num = 1;
int sum = 0; //外层循环求阶乘的和
while (num <= 5){
int factorResult = 1;
int tmp = 1; //里层循环负责完成求阶乘的细节
while (tmp <= num){
factorResult *= tmp;
tmp++;
}
sum += factorResult;
num++;
}
System.out.println("sum = " + sum);
// 结果 sum = 153
E、 二层循环,打印99乘法口诀表
int i =1;
while (i <= 9){
int j = 1;
while (j <= i ){
System.out.print(j + "*" + i + "=" + i*j + " " ); //中间的i*j,若为加号,要加括号。 此时打印不用换行,所以为print
j++;
}
i++;
System.out.println(); //此时打印完一行了,所以需要换行,故为println
}
// 结果
// 1*1=1
// 1*2=2 2*2=4
// 1*3=3 2*3=6 3*3=9
// 1*4=4 2*4=8 3*4=12 4*4=16
// 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
// 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
// 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
// 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
// 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
F、 打印图形如下 向右靠齐
// X
// XX
// XXX
// XXXX
// XXXXX
int i =1;
int n =5; // 其中空格与X数相加应该为 n
while (i < n){
for ( int j = 0 ; j < n - i ; j++){ //打印 空格 n-i;
System.out.print(" "); // 此时打印空格不用换行,所以为print
}for (int j = 0 ; j < i ; j++){ // 打印 X 为 i;
System.out.print("X"); // 此时打印X不用换行,所以为print
}
i++;
System.out.println(); //此时打印完一行了,所以需要换行,故为println
}
G、打印图形如下
// X
// XXX
// XXXXX
int i =1;
int n =5;
while (i < n){
for ( int j = 0 ; j < n - i ; j++){ //打印 空格 n-i;
System.out.print(" "); // 此时打印空格不用换行,所以为print
}for (int j = 0 ; j < 2 * i - 1 ; j++){ // 打印 X 为 2 * i - 1;
System.out.print("X"); // 此时打印X不用换行,所以为print
}
i++;
System.out.println(); //此时打印完一行了,所以需要换行,故为println
}
(2) *** break (让循环提前结束)
A、找到100-200中第一个3的倍数
int num = 100;
while(num <= 200){
if (num % 3 == 0){
System.out.println("是3的倍数,为:" + num);
break; //若此时不加break,会继续运行,最终得到100-200中所有3的倍数
}
num++;
}
// 执行结果 是3的倍数,为 : 102
(3) *** continue (跳过这次循环,立即进入下次循环)
A、找到100-200中所有3的倍数
int num = 100;
while (num <= 200){
if (num % 3 !=0){
num++; //这里的num++不能忘记,否则会一直为“是3的倍数,为102”的一个死循环
continue;
}
System.out.println("是3的倍数,为:" + num);
num++;
}
// 执行结果 是3的倍数,为:102
// 是3的倍数,为:105
// 是3的倍数,为:108
// 是3的倍数,为:111
// 是3的倍数,为:114
// 是3的倍数,为:117
// 是3的倍数,为:120
// 是3的倍数,为:123
// 是3的倍数,为:126
// 是3的倍数,为:129
// 是3的倍数,为:132
// 是3的倍数,为:135
// 是3的倍数,为:138
// 是3的倍数,为:141
// 是3的倍数,为:144
// 是3的倍数,为:147
// 是3的倍数,为:150
// 是3的倍数,为:153
// 是3的倍数,为:156
// 是3的倍数,为:159
// 是3的倍数,为:162
// 是3的倍数,为:165
// 是3的倍数,为:168
// 是3的倍数,为:171
// 是3的倍数,为:174
// 是3的倍数,为:177
// 是3的倍数,为:180
// 是3的倍数,为:183
// 是3的倍数,为:186
// 是3的倍数,为:189
// 是3的倍数,为:192
// 是3的倍数,为:195
// 是3的倍数,为:198
(4) *** for 循环
A、打印1-10的数字
for (int i = 1; i <= 10; i++){ // for (表达式1; 表达式2; 表达式3){
System.out.println(i); // 表达式4;
} // }
//执行过程: 1243 - 243 - 243 - 243 - 243 - 2为false,循环结束
B、计算1-100的和
int sum = 0;
for (int i = 1; i <= 100; i++){
sum += i;
}
System.out.println("sum = " + sum);
// 执行结果 sum = 5050
C、计算6!(6的阶乘)
int result = 1; //此时result不可等于0
for (int i = 1; i <= 6; i++){
result *= i;
}
System.out.println("result = " + result);
// 执行结果 result = 720
D、计算1! + 2! + 3! + 4! +5!
int sum = 0;
for (int i = 1; i <= 5; i++){
int result = 1;
for (int j = 1; j <= i ;j++){
result *= j;
}
sum += result;
}
System.out.println("sum = " + sum);
// 执行结果 sum = 153
(5)*** do while 循环(选学)
打印1-10
int num = 1;
do { // do {
System.out.println(num); // 循环语句;
num++;
} while (num <= 10); // } while (循环条件)