选择结构
顺序语句
分支语句
-
也叫作选择结构,根据逻辑判断,存在多个不同的结果,此时就会产生不同的选择,不同的选择执行不同的代码
-
if(boolean表达式){
语句体;
}单分支
int a = 10; System.out.println("begin..."); if(a > 5){ System.out.println("a大于5"); } System.out.println("and"); if(a > 20){ System.out.println("a大于20"); } System.out.println("end");
-
if…else…双分支
if(boolean表达式){
语句体1;
}else{
语句体2;
}
int num = 10; if(num % 2 ==0){ System.out.println("偶数"); }else{ System.out.println("奇数"); }
/*[2]复杂条件分支 登录案例:如果用户名是'A'密码是123,控制台提示登陆成功, 否则提示用户名或密码错误*/ char uerName = 'A'; int passWord = 123; if(userName == 'A' && passWord == 123){ System.out.println("登陆成功"); }else{ System.out.println("用户名或密码错误"); } /*总结: 1.多个条件要用到逻辑运算符 2.字符可以直接进行比较,所以字符也被称之为类整形 */
-
if …else…if…else…
//多分支,需求:给定两个数,如果a>b,输出a大于b int a = 10; int b = 5; if(a > b){ System.out.println("a大于b"); }else if(a == b){ System.out.println("a等于b"); }else{ System.out.println("a小于b"); }
//控制台输入 Scanner sc = new Scanner(System.in); int days = sc.nextInt(); if(days >= 0 && days < 5){ System.out.println("等级为00000000"); }else if(days < 12){ System.out.println("☆"); }else if(days < 21){ System.out.println("☆☆"); }else if(days < 32){ System.out.println("☆☆☆"); }else{ System.out.println("☾"); } /*对于区间的分支一定选用多分支 多分支时,如果从小到大,用小于号 如果从大到小,用大于号 */
-
switch语法
-
判断是否等于某一数值
-
注意事项:1.整形表达式的类型:byte,short,char,int;2.java5开始支持枚举,java7开始支持String,实际开发中迫不得已的情况下才能使用,尽量不使用;3.case之后的表达式结果必须是常量;4.case表示执行代码的入口
Scanner sc = new Scanner(System.in); int day = sc.nextInt(); String str; switch(day){ case 1 : {System.out.println("周一");break;} case 2 : {System.out.println("周二");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;} }
-
循环结构
-
如果要做重复的操作,一定要用到循环结构
-
在满足循环条件的情况下,重复执行某一段代码,这段被重复执行的代码就是循环体结构{while语句.do while语句.for语句}
-
while
-
while(boolean表达式){
循环体;
}
//需求:输出好好学习,天天向上5遍 //声明一个变量 int i = 1; //确定循环条件 while(i <= 5){ //循环体 System.out.println("好好学习,天天向上"); //循环控制变量变化 i++; }
//打印1-100 int i = 1; while(i <= 100){ System.out.println(i); i++; } //1-10中所有的偶数 int j = 1; while(j <= 10){ if(j % 2 == 0){ System.out.println(j); } j++; }
//求1-10的和 int i = 1; int sum = 0; while(i <= 10){ sum = sum + i;//sum += i; i++; } System.out.println(sum);
-
-
do while
-
do {
循环体;
}while{boolean表达式}
int i = 1; do { System.out.println("好好学习"); i++ ; } while (i <= 5);
int i = 1; do { System.out.println(i); i++; } while (i <= 10);
int i = 1; int sum = 0; do { sum += i; i++; } while (i <= 10); System.out.println(sum);
int i = 1; do { if (0 == i % 2) { System.out.println(i); } i++; } while (i <= 10);
-
-
for
-
for (初始化语句 ; boolean表达式 ; 循环后的操作) {
循环体;
}
- 注意:如果知道循环次数,优先选用for循环
//打印五遍好好学习 for (int i = 1; i <= 5; i++){ System.out.println("好好学习"); } //打印1-10 for (int i = 1;i <= 10;i++) { System.out.println(i); } //打印1-10的偶数 for (int i = 1;i <= 10 ;i++){ if (i % 2 == 0){ System.out.println(i); } } //计算1-10的和 int sum = 0; for (int i = 1;i <= 10;i++){ sum +=i; } System.out.println(sum);
for循环细节问题:1. 提升初始化语句的位置;在实际开发中,需要获取i的值
//将i的初始值提升到主方法内,从局部变量变成一个成员变量 int i = 1; for (;i <= 5;i++){ } System.out.println(i);
- i++的位置;
//i++的位置 for(int j = 1;j <= 5;){ if (true){ j += 2; } else { j++; } }
//需求:循环输入5个学生的成绩,如果输入的成绩不合格,提示重新输入 Scanner sc = new Scanner(System.in); for (int k = 1;k <= 5;){ System.out.println("请输入第" + k + "个学生的成绩"); int score = sc.nextInt(); if (score < 0 || score > 100){ System.out.println{"输入的成绩不合法,请重新输入"} } else { System.out.println("您输入的成绩是" + score); k++; } }
-
-
循环嵌套
/*☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ */ for (int line = 1;line <= 3;line++ ){ for (int i = 1;i <= 4;i++){ System.out.print("☆ "); } System.out.println(); } /*总结:外层循环控制行数,内存循环控制列数 双层循环可以解决行列问题 */ /*☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ */ for (int line = 1;line <= 4;line++){ for (int i = 1;i <= line; i++){ System.out.print("☆"); } System.out.println(); }
for (int i = 1;i <= 9;i++){ for (int j = 1;j <= i;j++){ System.out.print(j + "×" + i + "=" + i*j + "\t"); } System.out.println(); }