Java学习笔记3

Java Day 03

Switch语句

格式:

  switch(){
    case value1:
      语句体1;
      break;
    case value2;
      语句体2;
      break;
    case value3;
      语句体3;
      break;
      ...
    default:
      语句体n+1;
      break
  }

case后的值不能重复,且必须是常量。

case穿透

​ 如果switch语句中,case省略了break,就会产生case穿透。

​ 当开始case穿透时,后续的case就失去匹配效果,内部语句直接执行。(直到下一个break或将整个switch语句执行完毕。

for循环语句

格式:

for (初始化语句;条件判断语句;条件控制语句){
    循环体语句;
  }
  ​
  //例如:
  int s = 0;
  for (int i = 1 ; i < 10 ; i++){
    s += i;
  }

注意顺序:

1.初始化语句

2.条件判断语句:条件为true,继续执行。条件为false,循环结束

3.循环体语句

4.执行完循环体语句后!,执行条件控制语句。

5.返回2。

while循环语句

格式:

  //基本格式:
  while(条件判断语句){
    循环体语句;
  }
  ​
  //完整格式:
  初始化语句;
  while(条件判断语句){
    循环体语句;
    条件控制语句;
  }

执行顺序:

1,初始化

2,条件判断,true→继续,false→循环结束。

3,循环体,

4,条件控制

5,返回2

do while循环(用得少)

格式:

  //基本格式
  do{
    循环体语句;
  }while(条件判断语句);
  ​
  //完整格式
  初始化语句;
  do{
    循环体语句;
    条件控制语句;
  }while(条件判断语句);

三种循环的对比

for和while会先判断条件是否成立,再决定是否执行循环体。

do..while会先执行一次循环体,再判断条件是否成立,是否继续执行。

在for循环中定义的变量,在循环结束后就会消失。

在while循环中条件控制语句所控制的自增变量,在while循环结束后,还可以继续使用。

因此:

  • 明确循环次数的,使用for循环。

  • 不明确循环次数的,使用while循环。

  • do...while就别用了

死循环

三种:

  for(;;){}
  ​
  while(true){}
  ​
  do{}while(true);

其中while死循环最常用。

cmd中ctrl+C可以结束死循环

跳转控制语句

例1(continue):

public static void main(String[] args){
    for(int i = 1; i<= 24; i++){
      if(i == 4){
        continue;
      }
      System.out.println(i + "层到了");  //循环体语句
    }
  }

效果:i=4时,跳过这一次的循环体语句的执行(line 6)。

例2(break):

  public static void main(String[] args){
    for(int i = 1; i<= 24; i++){
      if(i == 10){
        break;
      }
      System.out.println(i + "层到了");  //执行语句
    }
  }

效果:i=10时,结束整个循环。特别注意:i=10时不会执行循环语句,即,只会打印到"9层到了"。

注意:continue和break都只能跳过/跳出自己所在的那一层关系,如果要跳出/跳过指定层的循环,可以加入标号。如下:(具体见案例11)

  标号名:while(true){
    switch(表达式){
      case 1:
        break 标号名;
    }
  }
  //效果:表达式为1时,该死循环结束

Random函数(掌握)

作用:产生一个随机数

使用步骤:导包、创建对象、获取随机数

  import java.util.Random;//导包
  Random r = new Random();//创建对象
  int number = r.nextInt(10)
//获取随机数,nextInt函数内为参数,
//意义为在[0,10)区间内取值,不包括10!左闭右开!

案例

案例4:减肥计划(switch语句)

 /*案例4:减肥计划
  键盘录入星期数,显示今天的减肥活动。
  1:跑步:
  2:游泳
  3:慢走
  4:动感单车
  5:拳击:
  6:爬山
  7:好好吃一顿。
  */
  import java.util.Scanner;
  public class case4{
      public static void main(String[] args){
          Scanner sc = new Scanner(System.in);
          System.out.println("请输入今天的星期数");
          int week = sc.nextInt();
          switch(week){
              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;
              default :
              System.out.println("输入有误,请重新输入");
              break;
          }
      }
  }

案例5:输出数据(for循环)

输出1-5和5-1。

  public class case5_1{
      //输出1-5
  public static void main(String[] args){
      for(int i = 1;i <= 5; i++){
      System.out.println(i);
      }
  }
  }
public class case5_2{
      //输出5-1
  public static void main(String[] args){
      for(int i = 5;i >= 1; i--){
      System.out.println(i);
      }
  }
  }

案例6:求和(for循环)

求1-5的和。

public class case6{
      public static void main(String[] args){
          int sum = 0 ;
          for(int i = 1; i <= 5; i++){
          sum += i;
          }
          System.out.println(sum);
      }
  }

案例7:1-100间偶数求和(for循环)

 public class case7{
      public static void main(String[] args){
          int sum = 0;
          for(int i = 1;i <= 100 ; i++ ){
              if(i % 2 == 0){
                  sum += i;
              }
              else{}
          }
          System.out.println("1-100间的偶数的和为" + sum);
      }
  }

案例8:求水仙花数(for)

水仙花数是一个三位数,其个位、十位、百位数字的立方和等于原数

  public class case8{
      public static void main(String[] args){
          /*在控制台输出所有的水仙花数
          水仙花数是一个三位数,其个位、十位、百位数字的立方和等于原数
          */
          int a ; int b ; int c;//定义abc,分别用于存放百位、十位、个位。
          for(int i = 100 ; i < 1000 ; i++){
              a = i / 100;    //百位    
              b = i / 10 % 10;    //十位
              c = i % 10;     //个位
              if(i == a*a*a+b*b*b+c*c*c){ //判断是否为水仙花数,是则输出这个数
                  System.out.println( i + "是一个水仙花数");
              }
          }
      }
  }

案例9:每行两个水仙花数(for)

  public class case9{
      public static void main(String[] args){
          /*在控制台输出所有的水仙花数
          水仙花数是一个三位数,其个位、十位、百位数字的立方和等于原数
          */
          int a ; int b ; int c;//定义abc,分别用于存放百位、十位、个位。
          int count = 0;
          for(int i = 100 ; i < 1000 ; i++){
              a = i / 100;    //百位    
              b = i / 10 % 10;    //十位
              c = i % 10;     //个位
              if(i == a*a*a+b*b*b+c*c*c & count == 0){    
    //判断是否为水仙花数,是则输出这个数
                  System.out.print( i + "是一个水仙花数  ");
    //如果计数为0,打印出水仙花数,并且计数+1
                  count++;
              }else if(i == a*a*a+b*b*b+c*c*c & count == 1){
    //如果计数为1,在同行打印,并且计数清零
                      System.out.println( i + "是一个水仙花数");
                      count = 0;
               }
          }
      }
  }

案例10:珠穆朗玛峰(while)

  //珠峰是8844.43米,纸厚度是0.1毫米,折纸多少次可以折成珠峰的高度?
  public class case10{
      public static void main(String[] args){
          double a = 8844430 ;    //珠峰高度
          double b = 0.1 ;    //纸张厚度
          int i = 0 ;
          while(a > b){
              b *= 2;
              i++;
          }
          System.out.println("纸张需要折叠" + i + "次才能超过珠穆朗玛峰的高度"); 
      }
  }

案例11:减肥计划改进(死循环+break)

  import java.util.Scanner;   //导包
  public class case11{
      /*
      目标:程序运行后可以多次查询减肥计划,直到输入0,程序结束
      */
      public static void main(String[] args){
      
          lo:while(true){
                  System.out.println("请输入今天的星期数,输入0退出程序");    //操作提示
                  Scanner sc = new Scanner(System.in);    //创建对象
                  int week = sc.nextInt();    //录入数据
                  switch(week){
                      case 0:
                          System.out.println("程序退出");
                          break loop;
                      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;
                      default :
                          System.out.println("输入有误,请重新输入");
                          break;
              }
          }
      }
  }

案例12:猜数字(Random函数)

需求:程序生成一个1-100的随机数,用户猜数字,根据数字与目标的相对大小给出提示。

 import java.util.Random;    //导入随机函数包
  import java.util.Scanner;   //导入用户录入包
  ​
  //需求:程序生成一个1-100的随机数,用户猜数字,根据数字与目标的相对大小给出提示。
  public class case12{
      public static void main(String[] args){
          Random r = new Random();    //创建对象(随机函数)
          Scanner sc = new Scanner(System.in);
          int num = r.nextInt(100) + 1;   //接受数据,范围是1-100
          System.out.println("一个1-100内的随机数已生成");
          loop:while(true){   //不确定循环次数,使用while死循环,命名loop。
              System.out.println("猜猜这是几");    //进入循环,打印提示
              int guess = sc.nextInt();   //录入猜的数字
              if(guess < num){    
                  System.out.println("你猜的数字偏小了");     //比较,偏小时提示
              }
                  else if (guess > num){      
                      System.out.println("你猜的数字偏大了");     //比较,偏大时提示
                  }
                  else if (guess == num){
                      System.out.println("恭喜你!你猜对了!!");       //猜中时提示,并中断循环
                      break loop;
                  }
                  else{   
                      System.out.println("输入有误,请输入1-100以内的数字");       //输入数字超范围时的提示
                  }
          }
      }
  }

        

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值