java_day02

本文详细介绍了Java编程的基础知识,包括for循环的工作原理、死循环的处理、以及多种循环的应用实例。从输入整数的倒序打印,到随机数猜谜游戏,再到打印不同图形的多重循环练习,逐步展示了Java控制流程的运用。此外,还涉及了冒泡排序算法的实现,以及二维数组的创建和操作,包括随机布置雷区的示例。这些内容涵盖了基础编程概念和技巧,适合初学者巩固和提升。
摘要由CSDN通过智能技术生成

1. for循环
  语法:
    for(表达式①;表达式②;表达式③){
      循环体④;
    }
    表达式①: 定义一个循环变量,并且初始化 如: int i = 1;
    表达式②: 循环条件(布尔表达式)  如: i<5;
    表达式③: 循环变量的变化规律 如: i++; i+=2; i--;
    循环体④: 一组被多次执行的语句.
    
  执行:
    [表达式①]  //产生了循环变量,并且有了初始值.
    [表达式② 真, 循环体④ ,表达式③]
    [表达式② 真, 循环体④ ,表达式③]
    ...
    [表达式② 假]

2. 死循环
  无法通过循环条件结束的循环叫做死循环,可以在循环体中通过break结束循环
  for循环的表达式②不写,表示永远为真.
  练习: 新建类ReverseDemo,从键盘输入一个整数n,倒序打印出n
        如: n = 12345; //打印出 54321

    package cn.tedu.day02;

    import java.util.Scanner;

    public class ReverseDemo {
      public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        long n = sc.nextLong();
        sc.close();
        for(;n!=0;){
          //打印出个位上的数字
          System.out.print(n%10);
          //除掉个位
          n /= 10;
        }
        
      }
    }

3. 综合练习
  新建类GuessDemo 随机产生一个[1,100]之间的整数,存入变量num中
  让用户来猜,共给六次机会,每次猜测都给出相应的提示
  例如: 猜大了,猜小了,如果猜对了,打印恭喜字样 
  六次都没猜度结束循环打印机会已经用完下次再来吧

    package cn.tedu.day02;

    import java.util.Scanner;

    public class GuessDemo {
      public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //随机产生一个[1,100]之间的整数存入变量num中
        int num = (int)(Math.random()*100+1);
        int i;//在循环外部定义循环变量
        //使用for循环让用户猜六次
        for(i=1;i<=2;i++){
          System.out.println("请猜第"+i+"次:");
          //定义变量接受用户输入的数字
          int user = sc.nextInt();
          if(user>num){
            System.out.println("猜大了!");
          }else if(user<num){
            System.out.println("猜小了!");
          }else{
            System.out.println("恭喜您猜对了!!!");
            break;//提前结束循环
          }
        }
        if(i==3){
          System.out.println("机会已经用完,下次再来吧!");
        }
        
        sc.close();
        
      }
    }

4. 双重循环
  可以在某个循环体中,编写循环,这种结构叫做多重循环.
  常见的是 双层循环,和三层循环.
  双层循环多用于处理二维问题.
  外层循环变量用于控制行数
  内层循环变量用于控制列数.  系列练习1: 在屏幕上打印出如下图形
    * * * * * 
    * * * * * 
    * * * * * 
    * * * * * 
    * * * * * 
  系列练习2: 在屏幕上打印出如下图形
    * 
    * *  
    * * * 
    * * * * 
    * * * * * 
  系列练习2: 在屏幕上打印出如下图形
        * 
       * *  
      * * * 
     * * * * 
    * * * * * 

    package cn.tedu.day02;

    public class TriangleDemo {
      public static void main(String[] args) {
        System.out.println("练习1");
        for(int i=1;i<=5;i++){
          //打印星号不换行
          for(int j=1;j<=5;j++){
            System.out.print("* ");
          }
          //打印换行
          System.out.println();
        }
        
        System.out.println("练习2");
        for(int i=1;i<=5;i++){
          //打印星号不换行
          for(int j=1;j<=i;j++){
            System.out.print("* ");
          }
          //打印换行
          System.out.println();
        }
        
        System.out.println("练习3");
        for(int i=1;i<=5;i++){
          //打印空格
          for(int j=1;j<=5-i;j++){
            System.out.print(" ");
          }
          //打印星号不换行
          for(int j=1;j<=i;j++){
            System.out.print("* ");
          }
          //打印换行
          System.out.println();
        }
        
      }
    }

练习: 新建类 NineNineSong 使用双层循环打印出乘法口诀表

package cn.tedu.day02;

public class NineNineSong {
    public static void main(String[] args) {
        for(int i=1;i<=9;i++){
            //打印列
            for(int j=1;j<=i;j++){
                System.out.print(j+"*"+i+"="+i*j+"\t");
            }
            System.out.println();//换行
        }
    }
}

  练习: 新建类 LotteryDemo 新建一个7个元素的整数数组lots
        随机生成7个[1,30]之间的整数存入 lots
        要求: 7的数字不能重复
 

  package cn.tedu.day02;

    import java.util.Arrays;

    public class LotteryDemo {
      public static void main(String[] args) {
        //定义一个7个整型元素的数组用于存放开奖号码
        int[] lots = new int[7];
        //定义一个31个布尔型元素的数组 color
        boolean[] color = new boolean[31];//默认初始值 false
        //使用for循环随机生成7个[1,30]之间的整数
        for(int i=0;i<lots.length;i++){
          //使用死循环生成一个不重复的数字
          for(;;){
            //(目标类型)(原始数据)
            int num = (int)(Math.random()*30+1);
            //如果color[num]是false 没染色
            if(!color[num]){
              color[num] = true;//染色
              lots[i] = num;
              break;
            }
            
          }
        }
        
        System.out.println(Arrays.toString(lots));
        
      }
    }

5.  冒泡排序
 

 package cn.tedu.day02;

  import java.util.Arrays;

  public class BubbleDemo {
    public static void main(String[] args) {
      //定义一个5个整型元素的数组,并且直接初始化
      int[] num = {1,5,12,4,7,6};
      System.out.println("排序前:"+Arrays.toString(num));
      //使用冒泡法对num数组进行排序(升序)
      //外层循环确定比较的轮数
      for(int i=1;i<num.length;i++){
        int t = 0;
        //每一轮的左数的最大下标为 数组长度-轮号-1
        for(int j=0;j<num.length-i;j++){
          if(num[j]>num[j+1]){
            int tmp = num[j];
            num[j] = num[j+1];
            num[j+1] = tmp;
            t++;
          }
        }
        System.out.println("第"+i+"轮");
        if(t==0){
          break;
        }
      }

      System.out.println("排序后:"+Arrays.toString(num));
    }
  }


  
6. 二维数组,数组的数组
  语法:
    数据类型[][] 数组名 = new 数据类型[m][n];
  
  练习: 新建类ThunderDemo定义一个10行10列的整型二维数组,默认值初始化,
        在二维数组中随机布置5个雷,
        打印出数组中所有的元素,每行打印10个空格隔开. 

   package cn.tedu.day02;

    public class ThunderDemo {
      public static void main(String[] args) {
        //定义一个10X10的二维数组
        int[][] map = new int[10][10];
        //要求在上述地图上随机布置5个雷,不能重复
        for(int i=1;i<=5;i++){
          //使用死循环随机生成雷的坐标,并保证不重复
          while(true){
            int row = (int)(Math.random()*10);//生成行坐标
            int col = (int)(Math.random()*10);//生成列坐标
            //如果不重复
            if(map[row][col]!=-1){
              map[row][col] = -1;//标记,该坐标已经生成过
              break;//结束循环
            }
            
          }
        }
        
        //打印地图
        for(int i=0;i<10;i++){
          for(int j=0;j<10;j++){
            if(map[i][j]==-1){
              System.out.print("X ");
            }else{
              System.out.print(map[i][j]+" ");
            }
          }
          System.out.println();
        }
      }
    }

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值