带你走进java-第三章.流程控制(下),随机数,函数的建立

java之流程控制

----承接第二章
3.循环结构
    2.do-while语句循环
    结构:
    do{
        循环体
    }while(判断条件)
    注意事项: do-while循环   不管条件是否成立,都会先执行循环体一次

do-while语句的使用
    //1.打印10次 你开心吗?
    int num = 10;
    do {
        System.out.println("你开心吗" + number + "次");
        number++;
    }while(number < 10);

    //2.从星期1开始打印 并询问明天上班不 
    //  输入上班 继续打印 
    //  输入不上班 停止程序

    // 声明循环增量
       int day = 1;
    // 声明接受键盘输入的对象
       Scanner scanner = new Scanner(System.in);
    // 声明一个空字符串,用来接受用户输入
       String  str = "";
       do {
        System.out.println("今天星期" + day);
        System.out.println("你明天上班不?");
        day++;
        // 思考在哪里接受键盘输入的字符串
        // 多次接受用户输入
        str = scanner.nextLine();
       }while(str.equals("上班") && day <= 7);

**特殊:**
    // break在while循环中的作用
    int number = 0;
    while (number < 10) {
        if(number == 5) {
            break;// break可以结束当前的循环
            // 注意:break后面不要写代码(会报错,因为不会执行)
        }
        System.out.println(number);
        number++;
    }

    3.for语句循环
    结构:
    for(声明循环增量;判断条件;循环增量自增){
            循环体;
    }

    注意:循环顺序
                1️⃣      2️⃣     3️⃣
         for(int i = 0; i < 5 ; i++){
                  4️⃣
                循环体
         }
                    5️⃣
               sout(循环体外)

      循环顺序:1->2->4->3  ->2->4->3  ->2...
      当循环结束再执行 5
for语句的使用
    //1.打印10次  你开心吗?
    for(int i = 0;i < 10;i++){
        // 注意: 循环增量只能在循环中使用(for后面的大括号里面使用)
         System.out.println("你开心吗?" + i);
    }

    //2.计算1~10之和
    int sum = 0;
    for(int i = 1; i <= 10; i++) {
        sum = sum + i;
    }
    System.out.println(sum);

    //3.使用for循环 1-100中 
    //  是7的倍数 的个数 打印个数

     // 声明变量,保存个数
        int num = 0;
        for(int i = 1;i <= 100;i++) {
            // 判断
            if (i % 7 == 0) {
                // 是7的倍数就自增
                num++;
            }
        }
        System.out.println(num);
        4.嵌套for循环
            1️⃣          2️⃣    3️⃣  
      for(int i = 0 ; i < 5 ; i++) {
            4️⃣        5️⃣     6️⃣
        for(int j = 0 ; j < 5 ; j++) {
                      7️⃣
                   内循环
        }
         8️⃣
        外循环
     }
     9️⃣
    循环外

循环顺序: 1->2->(4->5->7->6)->(5->7->6)->内循环结束->8->3->(2->内循环结束->8->3)->2
外循环结束 :->9
 嵌套for循环的练习 
     //1.利用for循环打印矩形
     ***
     ***
     ***
     ***
     ***
     // 外循环控制 一共有几行
     // 内循环控制 一共有几列
     //外循环
    for(int i = 0;i < 5;i++) {
        //内循环
        for(int j = 0; j< 3 ;j++) {
            System.out.print("*"); // 不换行
        }
        System.out.println(); // 换行
    }

    //2.打印三角形(尖向上)
    *
    **
    ***
    ****
    *****
 - 第一种

for (int i = 4; i >= 0; i--) {
    // 给j一个自减量,4,3,2,1,0....(这样内循环次数不断增大)
    for (int j = i; j < 5; j++) {
        System.out.print("*");
    }
    System.out.println();
}


 - 第二种(提倡使用)
 for (int i = 0; i < 5; i++) {
    // 改变判断条件  (增大内循环次数)
    for (int j = 0; j <= i; j++) {
        System.out.print("*");
    }
    System.out.println();
}

    //3.打印三角形(尖向下)
    *****
    ****
    ***
    **
    *
    for (int i = 0; i < 5; i++) {
        // 给j一个自增量,0,1,2,3,4....(这样内循环的次数不断减少)
        for (int j = i; j < 5; j++) {
            System.out.print("*");
        }
        System.out.println();
    }

    //4.打印等腰三角形
    -----*
    ----* * 
    ---* * *
    --* * * *
    -* * * * * 
    //先循环五行
    for (int i = 0; i < 5; i++) {
           //先设一个倒立三角形(帮助理解)
        for (int j = i; j < 5; j++) {
            System.out.print("-");
        }
        //再设一个尖向上的三角形(每一个*后面空一格,等到等腰三角形)
        for (int a = 0; a <= i; a++) {
            System.out.print("*");
            System.out.print(" ");
        }
        System.out.println();
    }

   //5.建立乘法口诀表
   // 建立乘法口诀表行数 9行
   for (int i = 1; i <= 9; i++) {
         // 建立乘法口诀表列数(逐次增多)
        for (int j = 1; j <= i; j++) {
            // 每一行每一列  打印  列数 * 行数的和   
            System.out.print(j + "*" + i + "=" + j*i + " ");
        }
    //跳转下一行 
    System.out.println();
   }
    5.循环的跳出
        在for循环中
            break    结束当前循环
            continue  结束本次循环,继续下次循环
// break和continue的区别

        for (int i = 0; i < 10; i++) {
            if ( i == 5) {
                break;// 运行到5就停止,不再执行
            }
            System.out.println(i);
        }


        for (int i = 0; i < 10; i++) {
            if ( i == 5) {
                continue;// 运行到5就跳过,继续执行后面
            }
            System.out.println(i);
        }
    }

    //1.练习:打印[0, 100]中
    //     是7的倍数中的值最大那个数(两种方法)


 - 第一种方法,正方向

    int max = 0;
        for (int i = 0; i <= 100; i++) {
            //判断
            if (i % 7 == 0) {
            // 所有7的倍数全部进入这个判断 
                max = i;    
            }
        }
    System.out.println(max);

 - 第二种方法,反向
    //使用break
    int max = 0;
    //倒着循环
    for (int i = 100; i >= 0; i--) {
        if(i % 7 == 0) {
            max = i;//进来判断的第一个数就是最大值
            System.out.println(max);
            break;//结束循环
        }
    }

    //2.班级13个人 跟每个人打招呼(打印几号你好) 
    //  讨厌的人不打招呼
    //  我分别讨厌 3号 5号 9号
    for (int i = 1; i <= 13; i++) {
        if(i == 3 || i == 5 || i == 9) {
            continue;
        }
        System.out.println(i + "号,你好");
    }

**嵌套循环里,breakcontinue的使用**
    // 双层循环中, break结束本层循环
    // 双层循环中, continue结束本层的本次循环,继续下次循环
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            if(j == 5) {
                continue;
            }
            System.out.print(j);
        }
        System.out.println();
    }
     6.三种循环的使用情况
     如果有明确的循环停止条件 一般用while循环好写
     配合数组  一般使用for循环
     一般使用死循环 都使用while

     如果不知道要循环多少次  就用死循环
     然后用break跳出循环

     for循环的死循环
        for(;;){
            循环体;
         }

java之随机数

1.随机数的产生
     随机数(系统提供的Math类)
     伪随机:计算机在取随机数的时候,都是按照一定规则去随机
     random()方法
     取值范围[0,1)  0~1之间的小数(留头不留尾)

      [最小值,最大值]
      公式:
      Math.random()*(最大值-最小值+1) + 最小值
//1.  随机[15,200]的整数 10个 并找出最大值
    int max = 0;
    for (int i = 0; i < 10; i++) {
        int num = (int)(Math.random() * 186 + 15);
        System.out.println(num);
        if(max < num) {
            max = num;
        }
    }
    System.out.println("max = " + max);

//2.   猜数字
   //  随机一个[0,100]的数
   //  输入你猜的数 
   //  如果你猜的数比随机出来的大 就打印猜大了
   //  反之 猜小了  只有当猜中 打印猜中了 结束程序 
    int num1 = (int)(Math.random()*101);//设定一个随机数
    System.out.println("请输入你要猜的数:");
    Scanner scanner = new Scanner(System.in);
    while(true) {
        String str = scanner.nextLine();
        int num = Integer.parseInt(str);
            if(num > num1) {
                System.out.println("猜大了");
            }else if (num < num1) {
                System.out.println("猜小了");
            }else {
                System.out.println("猜对了");
                break;
            }
    }

java之函数

1. 概念

函数:封装了特定功能的 代码块 [ 一个{}就代表一个代码块 ]
函数好处: 增加代码的重复使用率,提高效率

函数的写法:
                          参数列表(可以多个参数 , 也可以没有参数)
关键字 返回值类型 函数名字(参数类型1 参数名1,参数类型2 参数名2,...){
        函数体(要执行的代码);
        return  返回值;(返回值 和 函数声明上 返回值类型保持一致) 
}
函数可以没有返回值
这时 函数声明上的返回值类型 使用void表示

函数名使用 小驼峰写法
关键字 暂时照抄 public static

书写位置:
1.在类中书写
2.函数中 不能定义函数

编写函数步骤:
1.明确函数参数
2.明确函数返回值

**函数的重载(与前端不同):**
当函数的功能相同 但是代码实现不同
可以使用相同的函数名 来声明
注意:函数的重载 只跟参数(的数量,类型,顺序)有关  跟参数名,返回值类型无关
原函数
public static void fun(int a , char b, double c){}

public static void fun(int x , char y, double z){}  //报错

public static void fun(int x , double z){}   //不报错

public static void fun(int x , double z , char y){} //不报错
2.练习
    //打印三行八列的矩形的函数
    //通过增加参数 来拓展该函数的功能
    //打印n行m列的矩形
        public static void fun1(int n,int m) {
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < m; j++) {
                    System.out.print("*");
                }
                System.out.println();
            }
        }

        //  计算两个整数的和的函数
        public static int fun2(int n,int m) {
            return n + m;
        }
        //!!!定义同名函数-->函数的重载
        public static int fun2(int a, int b, int c) {
            return a + b + c;
        }

    public static void main(String[] args) {
        //调用 打印矩形函数
        //直接使用 函数名(传入的参数),调用
        fun1(5,12);

        //接受这个函数并打印
        int sum = fun2(90,4);
        System.out.println(sum);
    }
    //1.计算2个数的最大值
    public static int sum(int a,int b) {
        return a > b ? a : b;
    }
    //2.计算3个数的最大值
    public static int sum(int a,int b,int c) {
        int num = sum(a, b);
        return (num > c)? num : c;
    }
    //3.计算4个数的最大值
    public static int sum(int a,int b,int c,int d) {
        int num = sum(a, b, c);
        return (num > d)? num : d; 
    }
    //4.计算5个数的最大值
    public static int sum(int a,int b,int c,int d,int e) {
        int num = sum(a, b, c, d);
        return (num > e)? num : e; 
    }

**递归函数:在本函数当中调用一个  和自己函数名字相同的 函数**
//计算 4! 阶乘    1 * 2 * 3 * 4
public static int fun1(int n) {

    // 注意:递归函数必须要提供函数的出口
    //     否则会成为死循环.
    if(n == 1) {
        return 1;
    }
         //4 *  3  *  2  *fun1( n-1 )
    return n * fun1(n-1);
}



----------
**如何获取字符串中的字符**


        // 获取字符串当中的字符
        String str = "wangjun";
        // 根据角标获取字符,角标从0开始
        char c = str.charAt(1);
        System.out.println(c);
    }

猜你喜欢

转载自blog.csdn.net/qq_35368276/article/details/81949721
今日推荐