JAVA②循环结构

<pre>

几个问题

张三oracle考试成绩未达到自己的目标。为了表明自己勤奋学习的决心,他决定写一百遍“好好学习,天天向上!”

循环结构语法

image

int i = 1;
while (i<=100)
{
System.out.println("第"+i+"好好学习");
i++;
}
System.out.println("退出程序");
}
}

特点:先判断,再执行


image

实现打印50份试卷

分析是否包含重复操作?

使用while循环的步骤

  1. 确定循环条件和循环操作

  2. 套用while语法写出代码

  3. 检查循环是否能够退出

一个练习

老师每天检查张三的学习任务是否合格,如果不合格,则继续进行。

老师给张三安排的每天的学习任务为:上午阅读教材,学习理论部分,下午上机编程,掌握代码部分。

  • 分析是否存在重复操作

  • 使用while循环实现

  1. 确定循环条件和循环操作

  2. 套用while语法写出代码

  3. 检查循环是否能够退出

image

提示:判断字符串是否相等使用equals函数

 String input = "no";
        while(input.equals("no"))
        {
            System.out.println("合格了吗?(yes/no):");
            Scanner scanner = new Scanner(System.in);
            //接收用户输入
            input = scanner.next();
            if(input.equals("no"))//说明不合格
            {
                System.out.println("学习学习");
            }
        }
        System.out.println("完成学习任务");

练习二

2012年培养学员10万人,每年增长20%,请问按此增长速度,到哪一年培训学员人数将达到100万人?

提示:循环条件和循环操作分别是什么?

2、2013年培训学员数量 = 100000 * (1 + 0.2 )

int year = 2012;
double personCount = 100000;

    while(personCount <= 1000000)
    {
        //增加年数
        year++;
        //增加人数(1.2)
        personCount = personCount*1.2;
        System.out.println(year+"年"+personCount+"人");
    }

    System.out.println(year);
}

}

在编写程序过程中有时也出现错误,但不好发现和定位错误,有没有好的方法呢?

  • 通过代码阅读或者加输出语句查找程序错误

  • 当程序结构越来越复杂时,需要专门的技术来发现和定位错误,就是“程序调试”

image

调试例子

顺序输出1~5这5个数字

    int i = 1;
        System.out.println("程序调试演示,注意观察i的值:");
        while(i < 5){
            System.out.println(i);
            i++;
        }

image

调试解决问题

调试练习

编程实现:计算100以内(包括100)的偶数之和

设置断点并调试程序,观察每一次循环中变量值的变化
int i = 1;
int total = 0;
while(i <= 100)
{
if(i%2==0)//说明是偶数
{
total = total + i;
}

        i++;
   }
    System.out.println(total);

另一个问题(do-while循环)

经过几天的学习,老师给张三一道测试题,

让他先上机编写程序完成

然后老师检查是否合格。如果不合格,则继续编写。……

image
image

特点:先执行,再判断

while循环和do-while循环的区别

  • 执行次序不同

  • 初始情况不满足循环条件时

    while循环一次都不会执行

    do-while循环不管任何情况都至少执行一次

作业

实现整数反转 用户输入任意一个数字比如12345,程序输入54321

要求用循环实现,并练习调试技巧
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数");
int num = scanner.nextInt();

    //12345模10能到最后一位,输出它,再除以10,1234
    //重复上一步
    while(num>0)
    {
        //12345模10能到最后一位,输出它,再除以10,1234
        System.out.print(num % 10);
        num = num / 10;
    }

问题回顾 输出100次“好好学习!”

image

for循环的语法和执行顺序

image

问题

循环输入某同学高考考试的5门课成绩,并计算平均分

image

分析

循环次数固定

使用for循环结构的步骤

1、分析循环条件和循环操作

2、套用for语法写出代码

3、检查循环是否能够退出

循环条件:循环的次数不足5,继续循环

循环操作:录入成绩,计算成绩之和
····
Scanner scanner = new Scanner(System.in);
System.out.println("输入一个人名字");
String naem = scanner.next();
int score = 0;
int total = 0;
for (int i =1;i<=5;i++)
{
System.out.println("请输入"+i+"成绩");
score = scanner.nextInt();
total = total+score;
}
System.out.println(naem+"平均成绩多少"+total/5);
}
}

输出如图所示加法表

image

使用for循环:

1、循环初始化:i = 0;j = 输入值

2、循环条件:i<=输入值

3、循环操作:计算i+j

4、循环变量的改变:i++,j--
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个值");
int num = scanner.nextInt();
int j =num;
for(int i = 0; i<= num; i ++)
{
System.out.println(i+"+"+j+"="+num);
j--;
}

练习

求1~100之间不能被3整除的数之和

提示:

1、循环条件:i<100

2、循环操作:if (i % 3 != 0) {

sum = sum + i;

}

计算100以内的奇数之和

设置断点调试程序,追踪3个表达式的执行顺序及循环变量的变化

回顾break语句

image

break:改变程序控制流

用于do-while、while、for中时,可跳出循环而执行循环后面的语句

练习

循环录入某学生5门课的成绩并计算平均分,如果某分数录入为负,停止录入并提示录入错误

image

分析

循环录入成绩,判断录入正确性:录入错误,使用break语句立刻跳出循环;否则,累加求和
public class whileDemo2 {
public static void main(String[] args) {

    //循环输入某同学高考考试的5门课成绩,并计算平均分
    Scanner scanner = new Scanner(System.in);
    System.out.println("输入学生姓名");
    String name = scanner.next();

    int score = 0;
    int total = 0;
    boolean error = false;//假设用户录入没错误
    for(int i = 1; i <= 5; i++)
    {
        System.out.println("请输入"+i+"成绩");
        score = scanner.nextInt();
        if(score<0 || score>100)
        {
            error = true;//用户录入有误
            break;
        }
        total = total + score;

    }

    if(error == false)
    {
        System.out.println(name+"的平均成绩是"+total/5);
    }
    else
    {
        System.out.println("录入有误");
    }


}

}
1、使用循环进行累加,从1到10

2、判断累加值是否大于20

3、如果大于20,则跳出循环,并打印当前值
int total = 0;

    int i = 1;
    for(i=1; i <=10; i++)
    {
        total = total + i;
        if(total > 20)
        {
            break;
        }
       
    }
    System.out.println(i);

continue语句

continue 作用:跳过循环体中剩余的语句而执行下一次循环

循环录入Java课的学生成绩,统计分数大于等于80分的学生比例

image

1、通过循环,获得分数大于等于80分的学生人数num

2、判断:如果成绩<80,不执行num++,直接进入下一次循环

  • break语句终止某个循环,程序跳转到循环块外的下一条语句

  • continue跳出本次循环,进入下一次循环
    public static void main(String[] args) {
    // 循环录入Java课的学生成绩,
    // 统计分数大于等于80分的学生比例

    //5次成绩里,大于等于80分的次数
    
    
    int count = 0;
    Scanner scanner = new Scanner(System.in);
    
    System.out.println("请输入班级总人数");
    int personCount = scanner.nextInt();
    for(int i = 1; i <= personCount; i++)
    {
        System.out.println("请输入第" + i + "次成绩");
        //保存本次成绩
        int score = scanner.nextInt();
        //如果成绩小于80的话,跳出本次循环
        //即不累加次数
        if(score < 80)
        {
            continue;
        }
    
        count++;//累加成绩大于等于80的次数
    }
    
    System.out.println("80分以上学生人数为" + count);
    

// double rate = (double) count/personCount;

}

}

求1~10之间的所有偶数和

提示

1、使用循环进行累加,循环的范围是从1至10

2 、判断当前数是否为偶数

3 、如果为奇数跳过,执行下一个循环,如果为偶数,进行累加

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容