Java05--嵌套for循环+while+do-while+变量

1 嵌套for循环

1.1 概述

根据外层的条件,判断里层能否执行,如果能执行,就把里层代码都循环完毕后,再继续执行外层,继续判断。。

1.2 形式

for(…){
       for(…){
}
}

1.3 入门案例

package day0000;
public class T {
       public static void main(String[] args) {

//           f1();
              f2();
       }
       //总结1:当i=1时,j取到了所有满足条件的数据,1,2,3,4,5。
       //也就是说外循环执行1次,内循环执行多次
       private static void f1() {
              for(int i=1;i<=3;i++){//外循环
                     System.out.println("i="+i);//1,2,3
                     for(int j=1;j<=5;j++){//内循环
                            System.out.println("j="+j);//1,2,3,4,5
                     }
              }
       }
//总结2:外循环控制行,内循环控制列
       private static void f2() {
              for(int i=1;i<=3;i++){
                     for(int j=1;j<=5;j++){
                            System.out.print("*");
                     }
                     System.out.println();
              }
       }
}

1.4 练习1:打印正方形

//正方形

for(int i=1;i<5;i++){
       for(int j=1;j<5;j++){
              System.out.print("*");
       }
       System.out.println();

}    

1.5 练习2:打印左直角三角形

*

**

***

****

*****

//正直角三角形
private static void f4() {
       for (int i = 0; i < 5; i++) {//外循环,控制行,是一定的
              for (int j = 0; j <= i; j++) {//内循环,列是不固定的,是递增的
                     System.out.print("*");//保证第一行打印出来一个*,注意条件
              }
              System.out.println();
       }
}

1.6 练习3:打印99乘法表

1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
//99乘法表
private static void f4() {
       for (int i = 1; i < 9; i++) {//外循环,控制行,是一定的
              for (int j = 1; j <= i; j++) {//内循环,列是不固定的,是递增的
                     System.out.print(i+"*"+j+"="+i*j+" ");//保证第一行打印出来一个*,注意条件
              }
              System.out.println();
       }
}

1.7 break和continue

用来终止循环,可以用两种方式

1.7.1 形式

break: 中断当前循环,简单粗暴

for(){
       代码1
if(条件){
  代码3…
    break;//如果成立,直接跳出这个for循环
}
代码2…
}

continue:跳出本次循环,进入下一轮

for(){
       代码1
if(条件){
    代码3…
    continue;//如果成立,跳出本次for循环,进入下一轮
}
代码2…
}
1.7.2 练习1:找数字88

接收用户输入的100次数字,如果不是88继续输入,找到88就返回

package day003;
import java.util.Scanner;
public class Test4_breakcontinue {
       public static void main(String[] args) {
              f2();
       }
       //找88
       private static void f2() {
              for(int i=1;i<=100;i++){
                     //一直输入…
                     int j = new Scanner(System.in).nextInt();
                     if(j!=88){
                            continue;//继续输入
                     }
                     if(j==88){
                            System.out.println("找到了88...");
                            break;
                     }
              }
       }
}

2 循环结构2:while

先判断,再执行

2.1 形式

while(执行条件){
       代码…
}

2.2 练习1:猜数字

产生一个随机数,和用户一直在输入的数字比较。

package day004;
import java.util.Random;
import java.util.Scanner;
public class Test5_猜数字 {

       public static void main(String[] args) {
              System.out.println("猜1~1000的随机数");
              //系统产生随机数,从0开始,要从1开始就加1
              int i = new Random().nextInt(1000)+1;
              System.out.println(i);
              while(true){
                     //接收用户输入的值
                     int sc = new Scanner(System.in).nextInt();
                     //判断
                     if(sc>i){
                            System.out.println("大");
                     }else if(sc<i){
                            System.out.println("小");
                     }else{
                            System.out.println("right");
                            break;
                     }
              }
       }
}

3 循环结构3:do-while

先执行,再判断

3.1 形式

do{
       代码…
}while(执行条件);

3.2 练习1:猜数字

产生一个随机数,和用户一直在输入的数字比较。

package day004;
import java.util.Random;
import java.util.Scanner;

public class Test5_猜数字 {
       public static void main(String[] args) {
              System.out.println("猜1~1000的随机数");
              //系统产生随机数,从0开始,要从1开始就加1
              int i = new Random().nextInt(1000)+1;
              System.out.println(i);
              while(true){
                     //接收用户输入的值
                     int sc = new Scanner(System.in).nextInt();
                     //判断
                     if(sc>i){
                            System.out.println("大");
                     }else if(sc<i){
                            System.out.println("小");
                     }else{
                            System.out.println("right");
                            break;
                     }
              }
       }
}

4 变量

4.1 概念

可以改变的数,称为变量。一般通过三部分来描述一个变量。变量类型,变量名,变量值。其中三部分都是可以改变的,根据需要来确定即可。

变量的使用原则:就近原则。尽量控制到最小范围。。

4.2 局部变量

定义在方法里,或者局部代码块中。
注意:必须手动初始化,来分配内存。如:int i=5;
作用域也就是方法里或者局部代码块里,方法运行完内存就释放了。

4.3 成员变量

定义在类里。
注意:不用初始化,也会自动被初始化成默认值。
作用域是整个类中,类消失了,变量才释放。

基本类型默认值
byte0
short0
int0
long0L
float0.0f
double0.0d
booleanfalse

4.4 测试

package cn.tedu.arrays;
public class Test2_Variable {
    //1、成员变量:在类里方法外是
    //作用范围就是整个类里
    //可以不初始化,也会有默认值
    int age = 20;
    int sum = 30;
    public static void main(String[] args) {
       //2局部变量:在方法里是
       //作用范围就是方法里,出了这个方法就不认识了
       //必须初始化
       int sum = 10;
       System.out.println(sum);//10
       //3、变量的就近原则,附近有同名的会去执行最近的
       System.out.println(sum);//10
    }
}

5 拓展

5.1 三种循环的区别

三种循环都可以互相代替
1、 for:知道循环次数
2、 while/do while:当循环次数不确定时
3、 while:先判断,不符合规则,不执行代码
4、 do while:代码最少被执行一次,再去判断,符合规则,再次执行代码

5.2 打印右直角三角形


     *
   **
  ***
 ****
*****
package day999;
public class a {
       public static void main(String[] args) {
              //输出5行
              for(int i=1;i<=5;i++){
                     //空格三角
                     for(int x=5;x>i;x--){
                            System.out.print(" ");
                     }
                     //*号三角
                     for(int j=1;j<=i;j++){
                            System.out.print("*");
                     }
                     System.out.println();
              }
       }
}

5.3 打印全三角形

   *

    ***

   *****

  *******

*********

package day999;
public class a {
       public static void main(String[] args) {
              //打印5行
              for(int i=1;i<=5;i++){
                     //打印空格的倒三角
                     for(int j=5;j>=i;j--){
                            System.out.print(" ");
                     }
                     //打印*号的正三角
                     for(int k=1;k<=i*2-1;k++){
                            System.out.print("*");
                     }
                     System.out.println();
              }
       }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值