流程控制语句
一、if…else条件语句
1.if条件语句主要用于告知程序当某一个条件成立时,须执行满足该条件的相关语句。
2.语法:if(条件判断表达式){
执行代码块
}
例如:
public static void main(String args[ ]){
int x=1;
if(x>0)
System.out.println("x大于0")
}else{
System.out.println("x不大于0")
}
//if也可以单独使用
二、if…else if语句
1.例如:
public static void main(String args[ ]){
int x = 88;
if(x<60){
System.out.println("成绩不合格");
}else if(x>=85){
System.out.println("成绩优秀");
}else{
System.out.println("成级良好");
}
}
2.练习
问题:判断2064年是不是闰年。
解题思路:
闰年判断规则:
(1)能被400整除的是闰年
(2)能被100整除,不能被400整除的不是闰年
(3)能被4整除,不能被100整除的是闰年
(4)其他的不是闰年
public static void main(String args[ ]){
int year=2064;
if(year%400==0){
System.out.println("是闰年");
}else if(year%100==0&&year%400!=0){
System.out.println("不是闰年");
}else if(year%4==0&&year%100!=0){
System.out.println("是闰年");
}else{
System.out.println("不是闰年");
}
}
三、变量的作用域
变量只能在初始化之后使用。
在作用域里定义的变量,只能在该作用域中使用。
使用一对大括号包含的语句范围,称为作用域。
在作用域中,变量名不能重复定义。
例如:
public static void main(String args[ ]){
int x=1;//我就是初始化,初始化X的值
if(x>0){
int x=5;//这个地方就写错了,变量不能重复定义
}
}
四、switch语句
1.switch语句特点
(1)表达式的值只可以接受int、byte、char、short 、String型,不接受其他类型的值。
(接受String类型的值是在JDK7以后的版本才支持的)
(2)switch case中的值必须与switch表达式中的值类型一样,而且 case后只能接常量
(3)switch语句具有穿透性。如果判断多个条件,但是只有一个break关键字,那么case语句一直执行到有break关键字或switch语句尾行大括号时停止。
2.基本语法
switch (表达式){
case 取值1:
语句块1
…
case 取值n:
语句块n
default:
语句块n+1
}
例如:
public static void main(String[] args) {
int x = 3;//初始化变量是3-->这里就涉及到变量的作用域了,如果我写循环里,全局无法调用
switch (x) {//这里是表达式,里面不能写值
case 1://表达式的值
System.out.println("1");
break;
case 2:
System.out.println("2");
break;
case 3://执行到这里,值相同
System.out.println("3");//输出结果
break;//停止
default:
System.out.println("ok");
break;
}
}
//最后的执行结果是3
注意:switch中的表达式只能写固定的类型,不可以写判断条件
3.switch的穿透性
直到遇到break或者default关键字之后停下
public static void main(String[] args) {
int x = 1;//初始化变量是1
switch (x) {//这里是表达式,里面不能写值
case 1://表达式的值
System.out.println("1");
//没有break继续往下走
case 2:
System.out.println("2");
//没有break继续往下走
case 3://执行到这里,值相同
System.out.println("3");
break;//找到break系统判断跳出循环
default:
System.out.println("ok");
break;
}
}
//最后的执行结果是123
练习:
问题:ABCD四个选项,正确答案为C,用户输入C控制台提示正确,如果输入ABD提示错误,其他情况提示输入合法值。
public static void main(String args[ ]){
char score='C';
switch(score){
case 'A':
System.out.println("错误");
break;
case 'B':
System.out.println("错误");
break;
case 'C':
System.out.println("正确");
break;
case 'D':
System.out.println("错误");
break;
default:
System.out.println("输入合法值");
}
//输出结果为正确
}
4.continue关键字
用于跳过当前被continue声明的流程控制语句而不执行当前语句中的代码块,直接执行下一语句
五、while循环
1.基本语法
while(条件表达式){
执行代码块;
}
例如:
public static void main(String args[ ]){
//打印0-6的数字
int i=0;
while(i<=6){
System.out.println(i);
i++;//让i的值变化,要是不写这个,就是个死循环了。因为i的值永远都是0。
}
}
//输出结果0123456
练习:
问题:计算1-100各个数字的总和
public static void main(String args[ ]){
int i=1;
int sum=0;
while(i<=100){
sum+=i;//这个地方的意思就是sum=sum+i 第一次循环sum=0+1 第二次循环sum=1+2以此类推
i++;
}
System.out.println("总和为:"+sum);
}
六、do…while循环
1.基本语法
do{
执行代码块;
}while(条件表达式)
例如:
public static void main(String args[ ]){
int i=0;
do{
System.out.println(i);
i++;
}while(i>0)
//最后执行while
}
从这里大家可以看出do…while可以把本来不满足条件表达式的,变成满足条件表达式的后运行。如果改成while循环 i=0不满足条件表达式i>0这时就直接跳出循环了
七、for循环
1.基本语法
for((数据类型)条件表达式1;条件表达式2;条件表达式3){
执行代码块;
}
例如:
public static void main(String args[ ]){
for(int i=0;i<10;i++){
System.out.println(i);
}
}
注:1.for循环可以多层嵌套,之后会在数组中讲到“冒泡排序”就是利用了for循环的嵌套
2.for循环也可以嵌套if语句使用
3.for循环最好不要多层嵌套,这样会降低性能
练习:用for循环实现99乘法表
public static void main(String args[ ]){
int s=1;
for(int i=1;i<=9;i++) {
for(int j=1;j<=i;j++) {
s=i*j;
System.out.print(i+"*"+j+"="+s);
}
System.out.println();
}
}