流程控制结构:
顺序结构:按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。总的来说:写在前面的先执行,写在后面的后执行
选择结构:又称分支结构,选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果包括true、false,所以产生选择,按照不同的选择执行不同的代码。包括:if 语句、switch语句。
循环结构:循环语句可以在满足循环条件的情况下,反复执行某一段代码,并在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。包括:for 语句、while 语句、do...while 语句。
break:跳出循环 ------------------------------------------------------- break只能用于循环语句与switch语句中;
continue:跳出本次循环 ---------------------------------------------- continue只能用于循环语句中;
return:返回上层调用处,即跳出方法。 -------------------------- 方法有返回值时必须加上return。
有返回值的方法需要使用变量接收;
只有有返回值的方法才能直接打印;
选择结构:
语句格式:if (关系表达式){语句体1;} else if (关系表达式1){语句体2;}...else {语句体3;}
注意事项:
1.if 语句的大括号{ }是可以省略的。一旦省略,只控制到第一条语句。即控制到第一个分号为止;
2.所有的三目运算符都可以使用if-else来改写,反之则不能。因为三目运算符中两个表达式必须是同一类型,并且必须有一个返回
值。比如输出语句并不是一个返回结果。
3.执行到第一个关系表达式为true 时,结束选择语句,即便下面还有其他关系表达式为true的语句。同时else语句可以省略。
/*
通过一个if 语句完成下面语句:
键盘输入两个整数,判断大小...
*/
class IfDemo01{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
//第一种方法:通过对变量的重新赋值完成大小的比较
String word = "相等";
if(num1 != num2){
word = "不相等";
}
System.out.println(word);
//第二种方法:使用三目运算符
if(true){
System.out.println(num1==num2?"相等":"不相等");
}
//第三种方法:使用两个if 语句
}
}
// 使用多个else if语句:输入一个月份,返回相应的季节
class IfDemo02{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
if(month>=3 && month<=5){
System.out.println("春季");
}else if(month<=8){
System.out.println("夏季");
}else if(month<=11){
System.out.println("秋季");
}else if(month==12 | month==1 | month==2){
System.out.println("冬季");
}else{
System.out.println("输入月份不合法!")
}
}
}
语句格式:switch(表达式){case 常量1:语句体1;break; ... default : 语句体n;break;}
注意事项:
1.switch语句中表达式的类型:byte、short、int、char、枚举类型。JDK7.0之后新增了String;
2.case后面必须跟一个常量;多个case后面的常量值不能相同;
3.default也可以放到任意位置,当default语句位于最后位置时,break可以省略;
4.break可以省略,但省略之后代码会继续向下执行,一直执行到再次遇到break为止。
//输入学生成绩判断等级:>=90为“A”;>=80为“B”......
import java.util.Scanner;
public class SwitchDemo3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if(score>100 || score<0) {
System.out.println("输入成绩不合法!");
/* return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,
也就是退出main方法。跳转到上层调用的方法。
*/
return;
}
switch(score/10) {
case 10:
case 9:
System.out.println("A");
break;
case 8:
System.out.println("B");
break;
case 7:
System.out.println("C");
break;
case 6:
System.out.println("D");
break;
default: //default位于最后时,break语句可以省略。
System.out.println("E");
}
}
}
循环结构:
注:循环结构重要的一点是:能够在合适的时候使循环的判断语句变为false;条件判断语句返回的结果是一个布尔值。大括号后面不加分号。
For循环:for( 初始化语句;条件判断语句;控制条件语句 ){ 循环体语句;}
执行流程:
A:执行初始化语句(只执行一次);
B:执行条件判断条件语句,当结果为false时,退出循环;
C:执行循环体;
D:执行条件控制语句,之后执行条件判断语句。
While循环(较for循环更加直观):初始化语句;While( 判断条件语句 ){ 循环语句;控制语句;}
Do…while循环:至少执行一次循环体。
注意事项:
1.初始化语句只执行一次;
2.do..while 与 while循环语句的初始化语句在循环体外部;
3.注意控制条件语句,不要陷入死循环。
//循环体外定义变量用于存储奇数和以及偶数和
int singleSum = 0;
int doubleSum = 0;
for(int i=1;i<=100;i++) {
if(i%2==1) {
n1 += i;
}else {
n2 += i;
}
System.out.println("1-100的奇数和为:" + n1);
System.out.println("1-100的偶数和为:" + n2);
//计算1-100以内的奇数和以及偶数和
int singelSum=0;
int doubleSum=0;
int k=1; //初始条件语句
while(k<=100) { //条件判断语句
if(k%2==1) { //循环体语句
singelSum += k;
}else {
doubleSum += k;
}
k++; //条件控制语句
}
System.out.println("1-100以内的奇数和为:" + singelSum);
System.out.println("1-100以内的偶数和为:" + doubleSum);