我的Java第三课

(一) 流程控制语句

Java中的流程控制语句:顺序结构语句;选择结构语句;循环结构语句.

1)顺序结构:程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行.

2)选择结构:也被称为分支结构.选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生

择,按照不同的选择执行不同的代码.

Java语言提供了两种选择结构语句:if语句;switch语句

1.if语句

(1)if语句第一种格式:(针对单个表达式判断)

 if(表达式){

   语句;

 }

执行流程:判断表达式是否成立,如果为true,就执行这个语句,如果是false,就不执行.

例:package If语句;

 //if语句第一种格式

 public class IfDemo {
 public static void main(String[] args) {
 //定义变量
 int x = 1;
 //if语句
 if(x == 1){
 System.out.println("x的值为1");
 }
 }
 }

(2)if语句的第二种格式:(针对两个表达式判断)

 if(表达式){

   语句1;

 }else{

   语句2;

 }

执行流程:判断表达式是否成立,如果是true,则执行语句1;如果是false,则执行语句2.

例:键盘录入数据判断两个数据是否相等.

package If语句;

import java.util.Scanner;

//键盘录入两个数据,判断两个数据是否相等

public class IfTest {

public static void main(String[] args) {

           //创建键盘录入对象

           Scanner sc = new Scanner(System.in);

           //提示用户并接收数据

           System.out.println("请输入第一个数据: ");

           int a = sc.nextInt();

           System.out.println("请输入第二个数据: ");

           int b = sc.nextInt();

           //if语句进行判断

           if(a == b){

                System.out.println("这两个数据相等");

           }else{

                System.out.println("这两个数据不相等");

           }

     }

}

(3)if语句的第三种格式:(针对多个判断)

if(表达式1){

  语句1;

}else if(表达式2){

  语句2;

}else if(表达式3){

  语句3;

...

}else{

  语句n+1;

}

执行流程:首先判断表达式1是否成立,如成立即true,执行语句1;如果为false,判断表达式2是否成立,为true,执行语句2;为false,再次判断表达式3是否成立,true,执行语句3...最终上述都不成立,执行else里面语句n+1.

例:

package If语句;
import java.util.Scanner;
/ *
 * 编写代码实现如下内容:if语句实现
考试成绩分等级。
90~100 A等。
80-89 B等。
70-79 C等。
60-69 D等。
60以下 E等。
请根据给定成绩,输出对应的等级。
 * */
public class IfDemo2 {
public static void main(String[] args){
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//用户提示
System.out.println("请输入考试成绩: ");
//键盘接收数据
int x = sc.nextInt();

//if语句
if(x<0 || x>100){
System.out.println("数据错误");
}else if(x>=90 && x<=100){
System.out.println("A等");
}else if(x>=80 && x<=89){
System.out.println("B等");
}else if(x>=70 && x<=79){
System.out.println("C等");
}else if(x>=60 && x<=69){
System.out.println("D等");
}else{
System.out.println("E等");
}
}
}

(4)if语句的注意事项:

 ①如果if语句里面只有一条语句,if(表达式)后面的大括号可以省略,但是建议不要省略.

 ②if语句的表达式不管是简单的还是复杂的,最终都是boolean类型.

 ③在if语句里面,有分号的地方不能有左大括号,有左大括号的地方不能有分号.

(5)三元运算符和if语句

能使用三元运算符去实现的,肯定能使用if语句,反之,不成立(if语句实现的,不一定能够使用三元)

三元运算符对具体的结果进行操作,有一个具体的数值,它的操作对象不能是一个语句.

2.switch语句

(1)switch语句的格式:
switch(表达式){
case 值1:
     语句1;
     break;
case 值2:
     语句2;
     break;
....
default:
     语句n+1;
     break;
}

(2)执行流程:首先用siwtch后面表达式的值和case后面的值进行比较,如果和值1相等,执行语句1,如果不相等,跟值2比较,如果相等,

行语句2,以此类推,遇见break结束,如果上述没有相等的值,执行default中的语句.

(3)switch语句的几个注意事项:

 ①default在末尾中的break可以省略

 ②default可以在该switch语句中的任何位置

 ③case后面只能跟常量,不能跟变量

 ④在swtich语句中:如果中间的中没有写break,会造成一个现象:case穿透

 ⑤switch语句的结束条件:

   a:遇见break结束

   b:程序默认执行到末尾

例1: int x = 2;

   int y = 3;

   switch(x){
     default:
       y++;
       break;//语句遇见break结束
     case 3:
       y++;
     case 4:
       y++;
   }
   System.out.println("y="+y);//y=4

例2: int x = 2;
   int y = 3;
   switch(x){
       default:
          y++; //程序默认执行到末尾
       case 3:
          y++;
       case 4:
          y++;
    }
    System.out.println("y="+y);//y=6

 ⑥switch后面的数据类型:int,byte,short,char(本身能跟的类型)

  JDK5.0以后:可以根据枚举类型

  JDK7以后,可以跟String类型

例:

import java.util.Scanner;
/*
 * 录入月份的值,输出对应的季节
 * 
 * 3,4,5 春季
 * 6,7,8 夏季
 * 9,10,11 秋季
 * 12,1,2 冬季
 * */
public class SwitchTest {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//提示并接收数据
System.out.println("请输入一个月份的值: " );
int month = sc.nextInt() ;
//使用switch语句
switch(month){ //利用case穿透现象
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break ;
case 9 :
case 10:
case 11:
System.out.println("秋季");
break ;
case 12:
case 1:
case 2:
System.out.println("冬季");
break ;
default :
System.out.println("数据输入错误...");
break ;
}
}
}

3)循环结构语句:循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当

复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环.

循环结构语句:for循环;while循环;do-while循环.

1.for循环语句

(1)for循环结构语句格式:

 for(初始化语句;判断条件语句;步长语句(条件控制语句)){

      循环体语句;

 }

执行流程:首先对初始化语句进行赋值,然后看条件语句是否成立;如果是true,那么就执行循环体语句;执行完毕之和,会执行条件

制语句(++/--),该变量自增1或者自减1,然后再次判断条件语句是否成立,如果成立,就继续执行循环体语句;如果条件语句不成立,

那么for循环语句结束.

例:

package 循环语句_for语句;

//在控制台输出10次hello world!

public class ForDemo {

      public static void main(String[] args){

          //for循环

          for(int i=1;i<=10;i++){

                 System.out.println("hello world!");
}
}
}

for循环语句的注意事项:

有大括号的地方不能有分号,有分号的地方不能有大括号!

for循环语句的变量只能在本大括号里面去使用;及时的从内存中消失,有利于内存空间.

例1:

package 循环语句_for语句;

import java.util.Scanner;
/*
 * 需求:求n的阶乘!
 * 
 * 分析:
 * 阶乘的概念:
 * n! = n*(n-1)!
 * n! = n*(n-1)*(n-2).....3*2*1;
 * 
 * 阶乘思想
 * 
 * 求和思想
 * */
public class ForDemo5 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//提示并录入数据
System.out.println("n= ");
long n = sc.nextLong();
//定义最终结果变量
long jc = 1;
//for循环
for(int i = 1; i <= n; i ++){
jc *= i;
}
System.out.println(n+"的阶乘是"+jc);
}
}

例2:

package 循环语句_for语句;
/*
 * 需求: 求和思想
 * 求1-100之间的和
 * 求1-100之间的偶数和
 * 求1-100之间的奇数和
 * */
public class ForDemo4 {
public static void main(String[] args) {
//求1-100之间的和
//定义变量
int sum = 0;
//for循环
for(int i = 1; i <= 100; i ++){
sum += i;
}
System.out.println("1-100之间的和是: "+sum);
System.out.println("-------------------");
//求1-100之间的偶数和
int sum2 = 0;
//for循环
for(int i = 1; i <= 100; i ++){
if(i % 2 ==0){
sum2 += i;
}
}
System.out.println("1-100之间的偶数和为: "+sum2);
System.out.println("-------------------");
//求1-100之间的奇数和
   int sum3 = 0;
   //for循环
   for(int i = 1; i <= 100; i++){
    //判断奇数
    if(i % 2 != 0){
    sum3 += i;
    }
   }
   System.out.println("1-100之间的奇数和是: "+sum3);
}
}

2.while循环语句

while语句的格式:
基本的格式:

while(条件判断语句){
       循环体语句;
}

扩展的格式:

初始化语句;

while(条件判断语句){
       循环体语句;
       控制条件语句;
}

执行流程:初始化语句进行赋值,进入while语句:判断条件是否成立;如果成立,执行循环体语句,控制条件语句进行自增自减,然后

次判断条件是否成立,成立继续执行循环体语句,以次类推.如果不成立,while语句结束

例://定义初始化语句
 int x = 1 ;
 while(x <= 10){
    System.out.println("hello world");
    x++;

 }

例1:

ackage 循环语句_While;
/*
 * 问题:
 *     我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。
 *     请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
 * 
 * 分析:
 * 1)定义统计变量
 * 2)最终厚度:8848m
 * 3)初始厚度:0.01m
 * 4)折叠一次,是以前的2倍
 * 5)初始化厚度小于最终厚度:
 * 统计变量++
 * */
public class WhileDemo2 {
public static void main(String[] args) {
//1)定义统计变量
int count = 0;
//定义初始厚度和最终厚度,以cm为单位运算
int start = 1;
int end = 884800;
//不明确次数的情况下使用while循环语句
while(start < end){
count ++;
//折叠一次,是以前的2倍
start *= 2;
System.out.println("折叠第"+count+"次的厚度为"+start);
}
System.out.println("折叠的次数为"+count+"次");
}
}

3.do-while循环语句

do-while循环结构语句的格式:

基本的格式:
do{

  循环体语句;

}while(条件判断语句) ;

扩展格式:

初始化语句;

do{
   循环体语句;
   控制条件语句;

}while(条件判断语句) ;

例:public class DoWhileDemo {
  public static void main(String[] args) {
        //定义初始化条件
        int i = 1;
        do{
 System.out.println("hello");
 i++;
  }while(i<4);
 }

do-while循环,while循环,for循环:

do-while循环语句,循环体至少执行一次;而for循环,while循环,先判断条件语句是否成立,成立才执行循环体语句;

for循环和while循环:

使用区别:如果循环结束,还想使用控制的那个变量,那么必须使用while循环;一般情况下,使用for循环.从内存的角度来说,使用for循环好处大于while循环

应用场景:如果知道一个范围,使用for循环.如果不明确循环的次数,使用while循环.

死循环的两种格式:

第一种格式:
while(true){
         语句;
}

第二种格式:
for(;;){
      语句;

}

4.循环的嵌套:循环语句的中的循环体语句本身就是循环语句.

例1:

package 循环的嵌套;
/*
 * 在控制台输出:4行5列的*形状
 * 
 * *****
 * *****
 * *****
 * *****
 * 
 * */
public class ForForDemo {
public static void main(String[] args) {
//for循环
for(int x = 0;x < 4; x++){//控制行
for(int y = 0; y < 5; y++){//控制列
System.out.print("*");
}
System.out.println();
}
}
}

例2:

package 循环的嵌套;
/*
 * 需求:在控制台输出
 * *
**
***
****
*****
 * */
public class ForForDemo2 {
public static void main(String[] args) {
//外层控制行数,内层控制列数
/*
* 第一行对应的列:y=0; y<=0 ;y++
* 第二行对应的列:y=1; y<=1 ;y++ 
* 第三行对应的列:y=2; y<=2 ;y++
* 第四行对应的列:y=3; y<=3 ;y++
* 第五行对应的列:y=4...
* x的值:0,1,2,3,4
* */
for(int x = 0; x < 5; x++){//控制行
for(int y = 0; y <= x; y++){//控制列
System.out.print("*");
}
System.out.println();
}
}
}

例3:

package 循环的嵌套;
/*
 * 需求:在控制台输出一下*形
 * *
**
***
****
*****
******
*******
********
*********
99乘法表
 * */
public class ForForDemo3 {
public static void main(String[] args) {
for(int x = 0; x < 9; x++){//外层控制行
for(int y = 0; y <= x; y++){//内层控制列
System.out.print("*");
}
System.out.println();
}
System.out.println("------------------");
//99乘法表
for(int x = 1; x <= 9; x++){
for(int y = 1; y <=x; y++){
System.out.print(x+"*"+y+"="+x*y+"\t");
}
System.out.println();
}
}
}

(二)跳转控制语句

跳转控制语句:
break:中断
continue:继续
return:返回

例:

package 跳转控制语句;

public class BreakDemo {
public static void main(String[] args) {
for(int i = 0; i < 10; i++){
if(i == 3){
// break;//0 1 2 over
// continue;//0 1 2 4 5 6 7 8 9 over
return;//0 1 2
}
System.out.println(i);
}
System.out.println("over");
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值