控制语句
java控制语句:
- 选择结构:if语句,switch语句;
- 循环结构:for,while,do while;
- 控制循环:break,continue;
1、if语句
if语句被称为分支语句。
if语句的4种编写方式:
1、if(布尔表达式){ //表达式结果只能为真或假。----->可能都不执行
java语句;
java语句;
.......
} 2、if(布尔表达式){ //条件为真, 执行if。 ----->保证会执行其中一个分支
java语句;
java语句;
.......
}else{ //条件为假, 执行else括号内容
java语句;
.......
} 3、if (布尔表达式){ // ----->if语句只要有一个分支执行,整个If语句就结束
java语句;
java语句;
.......
}else if(布尔表达式){
java语句;
.......
}else if(布尔表达式){
java语句;
....... }
4、if (布尔表达式){ //比起第3 种有else分支
java语句;
java语句;
.......
}else if(布尔表达式){
java语句;
.......
}else if(布尔表达式){
java语句;
....... }else{
java语句;
java语句;
}
注意:
- 带有else分支的可以保证一定会有分支执行。
- 所有的控制语句都可以嵌套使用,在合理嵌套的情况下。
举例代码:
/*
需求:判断当前天气
晴天:天气温度30度以上:性别男--->戴墨镜;性别女---->擦防晒
下雨:带雨伞 ----> 男带大黑伞,女带粉色伞
*/
public class IfTest03
{
public static void main(String[] args){
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.println("进入天气智能穿戴系统:");
//接收天气
System.out.print("选择下雨/1 或 晴天/2: ");
int num = s.nextInt();
if(num != 1 & num !=2){
System.out.println("无效,天气请从1或2中选择!");
return;
}//这里应该加上返回,否则会继续进行性别输入判断
//接收性别
System.out.print("男/1 或 女/0? ");
int sex = s.nextInt();
//这里应该加上返回,否则会继续进行温度输入判断
if(sex != 0 & sex !=1){
System.out.println("无效,性别请从0或1中选择!");
return;
}
if (num == 1)
{
System.out.println("下雨啦~");
System.out.print(" 性别是:" + sex);
if(sex == 1){
System.out.print(" 请带大黑伞!");
}else{
System.out.print(" 请带粉红伞!");
}
}else{
//接收温度
System.out.print("请告知当前温度: ");
int temperature = s.nextInt();
System.out.println("好天气!");
System.out.print(" 性别是:" + sex);
System.out.print(" 温度为:" + temperature);
if (temperature >= 30)
{
if (sex == 1)
{
System.out.println(" 注意佩戴墨镜!");
}else{
System.out.println(" 注意携带防晒喷雾!");
}
}
}
//遇到疑问:声明定义的性别man可以进去,键盘输入的性别man进不去man情况条件;
//字符串定义的性别键盘输入判别不了,整数类型的性别键盘输入ok,为什么呢?
//这是因为声明的性别String sex = “man”;是引用数据类型,不能用==作为关系判断运算。
//扩充知识点
//字符串判断条件用==的时候,只是判断地址相等,字符串是否相等用compare to
//由于键盘输入的地址与判断的字符串地址始终不相等,因此进不去相等的条件。
}
}
2、switch语句
1. switch表示开关或切换。
2. 语法结构:switch(int或String类型的字面值或变量){
case int或String类型的字面值或变量:
java语句;
java语句;
......
break; //break没有写的话会依次执行下面语句
case int或String类型的字面值或变量:
java语句;
......
break;
case int或String类型的字面值或变量:
java语句;
......
break;
......
default:
java语句;
......
}3. switch执行原理:
switch后面的小括号当中的”数据“和case后面的”数据“进行一一匹配,匹配成功的分支则执行;
按照自上而下的顺序依次匹配;4. 分支中有break语句,则整个switch终止;
分支中没有break语句,则直接进入下一个分支执行(不进行匹配);
----->该现象称为case穿透现象,[提供break语句可以避免穿透]。5. 所有分支都没有匹配成功,有default语句的话,则执行default分支中的程序。
6. switch和case后面只能是int和String类型数据,byte, short, char,也可以,因为可以自动转换为int类型。
7. case可以合并。
int i = 10;
switch(i){
case 1: case 2: case3: case 10:
System.out.println("Test code!");
}
举例代码:
public class SwitchTest02
{
public static void main(String[] args){
java.util.Scanner s =new java.util.Scanner(System.in);
System.out.print("请输入周几:");
String str = s.next();
switch(str){
case "周一":
System.out.println(1);
break;
case "周二":
System.out.println(2);
break;
case "周三":
System.out.println(3);
break;
case "周四":
System.out.println(4);
break;
case "周五":
System.out.println(5);
break;
case "周六": case "周日":
System.out.println(67);
break;
default:
System.out.println("error!");
}
}
}
switch练习作业——简单计算器实现:
循环结构:
- 在程序中需要反复、重复执行的代码,若没有循环结构需要重复编写代码,麻烦。
- 将需要反复执行的代码放到”循环体“,联合计数器,共同控制这段需要反复执行的代码。
- for循环、while循环、do...while循环
3、for循环
a. for循环语法结构:
for(初始表达式;布尔表达式;更新表达式){
//是需要重复执行的代码片段[循环体:由java语句构成]
}
b. for循环的执行过程/执行原理?[很重要]
b.1 初始表达式、布尔表达式、更新表达式都不是必须的;[分号是必须的]
b.2 初始表达式最先执行并且整个for循环中只执行一次;
b.3 布尔表达式必须是true/false;
b.4 for的执行过程:
* 先执行初始化表达式,并且该表达式只执行一次;
* 判断布尔表达式的结果true or false:
true--->执行循环体;执行更新表达式;---->再一次判断布尔表达式.......
false--->循环结束;
举例代码1:
/*
循环语句和条件判断语句嵌套使用:[for循环和if语句嵌套]
*/
public class ForTest04
{
public static void main(String[] args){
//找出1~100所有的奇数
for(int i = 1; i <= 100; i++){
if (i%2==1)
{
System.out.println("---->"+i);
}
}
for (int i = 1; i < 100 ; i+=2 )
{
System.out.println("->"+i); //优先该方案,代码少,效率高,循环次数较少
}
}
}
举例代码2:
public class ForTest08
{
public static void main(String[] args){
/*
需求:九九乘法表实现
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
......
......
9*1=9 9*2=18 9*3=27 ............9*9=81
*/
for (int i = 1;i<=9 ;i++ )
{
for (int j = 1;j<=i ;j++ )
{
System.out.print(j+"*"+i+"="+(i*j)+" ");
}
System.out.println("\r\n"); ///第"+i+"次循环
}
}
}
for循环练习作业——找素数:
4、while循环
while循环语句:
1、while循环的语法结构:
while(布尔表达式){
循环体;
} 2、while循环的执行原理:
先判断布尔表达式的结果:
*true
——执行循环体
*判断布尔表达式的结果:
*true
——执行循环体
*判断布尔表达式的结果:
*true
——执行循环体
*判断布尔表达式的结果:
......
*false
——循环结束
*false
——循环结束
*false
——循环结束 3、while循环的循环次数:
0~N次。
注意:while循环的循环体可能执行0次。
举例代码:
//while循环输出1~10
public class WhileTest02
{
public static void main(String[] args){
int i = 1;
while(i <= 10){
System.out.println(i);
i++;
}
System.out.println("---------------------------");
int j = 10;
while (j>0)
{
//System.out.println(j--); //相当于下面两行
System.out.println(j);
j--;
}
while (j>0)
{
//System.out.println(--j); //相当于下面两行
j--;
System.out.println(j);
}
}
}
5、dowhile循环
do..while循环:
1、do..while循环的语法结构:
do{
循环体;
}while(布尔表达式); 2、do..while循环的执行原理:与while循环相似。
3、do..while循环的执行次数:
do..while循环的循环体代码片段的执行次数是:1~N次[至少一次]。 4、使用do..while循环的注意事项:
do..while循环语句最终有一个分号不能丢了。
举例代码:
public class DoWhileTest01
{
public static void main(String[] args){
int i =10;
do{
System.out.println("i的值为:"+i); //10,do..while循环至少执行一次
}while(i>50);
System.out.println("**********************************");
while(i>50){
System.out.println("i值为:"+i); //不满足条件,不会执行
}
System.out.println("**********************************");
int z = 10;
do{
System.out.print("--->"+z); //10,9,8,7,6,5,4,3,2,1
z--;
}while(z>0);
}
}
6、break语句
java控制语句中的break语句:
1、break:关键字,”中断/折断“。
2、break;--->可以成为一个单独完整的java语句。
3、break语句使用在switch语句中用来终止switch的语句的执行。
4、break语句同样可以使用在循环语句当中,用来终止循环的执行。
5、break用来终止哪个循环?
6、break使用在for\while\do..while循环语句中用来跳出循环,终止循环的执行。
8、默认情况下,break终止的是内层for循环,即离他最近的循环语句。
9、也可以中断指定的某层循环,需要对不同循环起名字。
举例代码:
public class BreakTest01
{
public static void main(String[] args){
for (int i=1; i<10; i++)
{
if (i > 5)
{
break;
}
System.out.print(i); //1, 2, 3, 4, 5
}
System.out.println("****************两层循环*******************");
for (int j = 1; j<5; j++ )
{
for (int i=1; i<10; i++)
{
if (i > 5)
{
break;
}
System.out.print(i); //1, 2, 3, 4, 5; 1, 2, 3, 4, 5; ......
}
}
System.out.println("****************带名字的两层循环*******************");
//给for循环起名字for1,for2
for1:for (int j = 1; j< 8;j++ )
{
for2: for (int i = 1;i<10 ;i++ )
{
if (i == 5)
{
break for1; //如果i=5则外层循环都终止:
}
System.out.print(i); //1,2,3,4,5
}
}
//上述java语句使用较少
}
}
7、continue语句
break、continue和return的区别:
break:跳出当前层循环;
continue:跳过本次循环,进入下一次循环;
return:跳出当前方法的循环;
continue语句:
1、continue:继续/下一个
2、continue也是循环语句中用来控制循环的执行
3、break和continue的区别:
*break:表示循环终止;
*continue:表示直接从---->更新表达式----->开始执行;
4、continue也有以下语法:
*continue 循环名称;
举例代码:
public class ContinueTest01
{
public static void main(String[] args){
for (int i = 1;i<10 ;i++ )
{
if (i ==5)
{
break;
}
System.out.println(i);
}
System.out.println("Hello WORLD");
System.out.println("******************上break,下continue**********");
for (int i = 1;i<10 ;i++ )
{
if (i ==5)
{
continue; //只要这个语句执行,当前本次循环停止,直接进入下一次循环继续执行
}
System.out.println(i);
}
System.out.println("Hello WORLD");
}
}