Java【04】循环结构

测试题:
1.  在JAVA中,以下程序的输出结果为()。 
boolean b1=true,b2=false;  b1=false;b2=false;
    
if((b1=2>3) && (b2=5>0)){
    b1=true;
}
System.out.print("b1="+b1+";b2="+b2);

2. 在java中,运行下面的代码输出的结果是()
int x = 1;int y = 2; x += y+y;
if(x < 5 && y <=4){
    System.out.println("1");
}else if(x >= 5 || y>4){
    System.out.println("2");
}else{
    System.out.println("error");
}


测试题1 输出:
b1=false;b2=false

测试题2 输出:
2

案例:给定一个年份,判断是否是闰年
闰年的判断标准是:
    1)可以被4整除,但不可被100整除
    2)可以被400整除

public class Home2{
    public static void main(String[] args){
        int year=2018;
        if(year%400==0 || (year%4==0 && year%100!=0)){
            System.out.println(year+"是闰年");
        }else{
            System.out.println(year+"不是闰年");
        }
    }
}

输出:
2018不是闰年


if和switch有什么区别!
if的功能多一些。虽然官方说switch效率高些(没测试过,不过现在计算机不差这点性能)。
switch的功能做不了区间的功能,比如 i>=5 区间很多,switch只能判断 == 的情况。


今天如果是第一次接触,会感觉难,烧脑!5天之后,就会觉得很简单(每天都在用)
【类似刚学骑自行车,不知道怎么把握平衡,上车多练就行!!!】

1. 循环结构
为什么要有循环结构呢?
打印534次,好好学习天天向上!争取得到植发奖励!
作用:提高复用性,提高扩展性和维护性!
1.1 while
语法:while(循环条件){代码块}
原理:循环条件成立,则执行代码块,执行完代码块,会再次回到循环条件判断的位置
    如果依然成立,则再次执行代码块,直到循环条件不成立为止(循环结构结束)
控制循环次数:
① 循环因子
② 循环条件
③ 循环因子值的改变
案例:
int i=0;//程序员的习惯,0认为是第一个数据
while(i<5){
    System.out.println("好好学习天天向上!争取得到植发奖励!"+i);
    i++;
}

建议常用手段:i++就放在循环的最末尾!
练习:
1. 打印10次的HelloWorld
2. 打印1-5和5-1
3. 求出1-5之间数据之和
4. 求出1-100之间偶数和
5. 不断输入正数,直到输入-1为止(输入-1之外的数字时,提示输入有误,再次输入)
不知道循环次数!循环次数是由用户决定的!
6. 班级有5位同学,依次输入每位同学的java成绩,求出java总成绩和最高分、平均分、最低分

示例:
public class Test6{
    public static void main(String[] args){
        java.util.Scanner input=new java.util.Scanner(System.in);
        int i=1;
        double sum=0;
        double max=0;//擂主台
        double min=100;//给一个int型的最大值(Integer.MAX_VALUE)
        //打雷台的机制   5位选手依次上台,每位选手都和擂主台上比大小,
        //如果大擂主更新,如果小,不更新
        while(i<=5){
            System.out.println("请输入第"+i+"位同学的成绩:");
            double score=input.nextDouble();
            System.out.println("第"+i+"同学的成绩为:"+score);
            sum+=score;
            if(score>max){//如果该位选手的成绩改与擂主
                max=score;//他就是新晋擂主
            }
            if(score<min){
                min=score;
            }
            i++;
        }
        
        System.out.println("总分为:"+sum);
        System.out.println("最高分为:"+max);
        System.out.println("最低分为:"+min);
        System.out.println("平均分为:"+sum/5);
    }
}

输出:
请输入第1位同学的成绩:
56
第1同学的成绩为:56.0
请输入第2位同学的成绩:
24
第2同学的成绩为:24.0
请输入第3位同学的成绩:
80
第3同学的成绩为:80.0
请输入第4位同学的成绩:
90
第4同学的成绩为:90.0
请输入第5位同学的成绩:
98
第5同学的成绩为:98.0
总分为:348.0
最高分为:98.0
最低分为:24.0
平均分为:69.6

循环的嵌套:难度较高

打印图形:
a. 矩形
****
****
****
b. 直角三角形  -->   99乘法表
*
**
***
****
*****
c. 直角三角形
*
***
*****
*******
*********
d. 等腰三角形
   *
  ***
 *****
*******

【8】
示例:直角三角形
public class Test7{
    public static void main(String[] args){
        int i=0;
        while(i<5){//控制行数
        
            int j=0;
            while(j<i+1){//控制每行的*数   和行数有关(由i的值所决定的);另一直角三角形【规律:2*i+1】
                System.out.print("*");
                j++;
            }
            
            System.out.println();//换行
            i++;
        }
    }
}

输出:
*
**
***
****
*****

这边的嵌套示例,大都按类似下面模式来写:
        int i=0;
        while(i<5){//控制行数
        
            int j=0;
            while(j<i+1){//找规律,相应修改条件
                具体执行代码
                j++;
            }
            
            System.out.println();//换行
            i++;
        }


【9】
示例:99乘法表
public class Test1{
    public static void main(String[] args){
        //99乘法表
        /*
            1*1=1
            2*1=2 2*2=4
            3*1=3 3*2=6 3*3=9
            ...
        */
        int i=1;//i的取值是1-9
        while(i<=9){
            
            int j=1;
            while(j<i+1){
                System.out.print(i+"*"+j+"="+i*j+" ");
                j++;
            }
            
            System.out.println();//换行
            i++;
        }
        /*
            分析程序的运行流程
            i=0   有哪些内容输出,j的值如何变化,i的值如何变化
        */
    }
}


示例:等腰三角形
public class Test3{
    public static void main(String[] args){
        int i=0;
        while(i<5){//控制行数
            
            int k=0;
            while(k<5-1-i){//控制空格数
                System.out.print(" ");
                k++;
            }
            
            int j=0;
            while(j<2*i+1){//控制*数
                System.out.print("*");
                j++;
            }
            
            System.out.println();
            i++;
        }
        
        /*
            i    j    j=2*i+1;    k        k=4-i
            0   j<1                k<4
            1   j<3                k<3
            2   j<5                k<2
            3   j<7                k<1
        */
    }
}

输出:
    *
   ***
  *****
 *******
*********

1.2 for
语法:for(循环因子的声明;循环条件;循环因子值的改变){代码块}
优势:将while循环的控制循环次数的三个要素,总结到一个地方去了(小括号内)

确定循环次数的情况下,使用for循环
不确定循环次数的情况下,使用while循环

for(;;){} //这样写是死循环

示例:下面这两处声明 int i=0; 【可以】,但把 for 循环写在 while 下面,则不行。
public class Demo2{
    public static void main(String[] args){
        for(int i=0;i<6;i++){
            String name="";
        }//这个for循环执行结束,i的空间会释放掉
        //此时就相当于i没有到过我的世界
        int i=0;
        while(i<5){
            i++;
        }
    }
}

1.3 do-while
语法:do{代码块}while(循环条件);
原理:执行代码块,然后判断循环条件,如果条件成立,则继续执行代码块
      如果条件不成立,则循环结束
特点:do-while至少执行一次
使用场景:不确定循环次数的情况(登录注册)
练习:
循环输入正数,输入-1停止! ★
登录注册->while/do-while

示例:
public class Demo3{
    public static void main(String[] args){
        int i=0; //【注:循环因子的声明写在这里】,不能写在 do 里面的代码块中
        do{
            System.out.println("HelloWorld"+i);
            i++;
        }while(i<5);
    }
}

1.4 其他循环
foreach  增强for循环(后期学)
递归  循环的一种(讲完方法学)

2. 跳转结构
2.1 break
① switch内
用于结束当前switch
② 用在循环内(while,for,do-while,foreach)
用于结束当前循环

2.2 continue
① 用在循环内(while,for,do-while,foreach)
用于结束本次循环,直接进入下一次循环

练习:
1. 不断输入正数,直到输入-1为止(使用break完成)
2. 打印1-100数字,7的倍数跳过!(使用continue)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值