(头歌)Java程序设计---------for 循环

第1关:for 循环遍历字符串

任务描述

本关任务:编写一个程序,打印指定金字塔形状。

相关知识

for 循环语法

for 循环是一种简明写法, 例如以下 while 循环语句:

  1. int i = initialValue;
  2. while(i < endValue){
  3. // Loop Body
  4. ...
  5. i++;
  6. }

可以替换以下 for 循环形式:

  1. for(int i = initialValue; i<endValue; i++){
  2. // Loop Body
  3. ...
  4. }

for 循环的一般语法如下所示:

  1. for(初始操作; 循环继续的条件; 每次迭代后的操作){
  2. // 循环体
  3. 语句(组)
  4. }

通过对比可以发现,使用 for 循环语句,将 while 语句中原本用于循环控制的语句从循环体中抽离了出来。这样做虽然在一定程度上降低了循环控制的灵活性,但是增加了代码的规整性。

遍历

遍历是编程中经常涉及到的一个操作,通俗来讲,遍历操作就是“依次访问所有,不重不漏”的操作。遍历经常涉及到“列表”这样一种结构,即依次访问列表中的每个元素。

例如在日常生活中的“点名”就是一种典型的遍历操作。

在 Java 语言里,实现遍历最常用的方法就是使用 for 语句,通过使用下标来访问元素的方式实现遍历时,往往将下标作为循环控制的变量,此时循环控制就是简单的“下标加 1 ”。因此,使用 for 语句能够使我们在循环体中更关注对元素的操作。

编程要求

根据提示,在右侧编辑器 Begin-End 区域补充代码,使用 for 循环语句实现要求的遍历字符串的功能,具体要求如下:

  • 输入一个字符串,依次输出第奇数个字符,具体查看示例;
  • 输出字符时,一个字符占一行,最后一个字符后需要换行。

测试说明

平台会对你编写的代码进行测试:

测试输入

  1. Welcome to Java!

预期输出:

  1. W
  2. l
  3. o
  4. e
  5. t
  6. a
  7. a

代码如下: 

package step1;
import java.util.Scanner;

public class Main 
{
    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);
        String inStr = input.nextLine();
        input.close();
        //请在指定位置填写代码。
        /********* Begin *********/
        for(int i=0;i < inStr.length();) 
        {
	 System.out.println(inStr.charAt(i)); 
        i+=2;
        }
        /********* End *********/
    }
}

第2关:有限状态机之开心的蜗牛

任务描述

本关任务:简单了解什么是有限状态机,并根据本案例描述的“开心的蜗牛规则”实现一个简单的有限状态机。

相关知识

完成本关任务你需要掌握以下知识点:

  1. 有限状态机

  2. 开心的蜗牛游戏规则

有限状态机

有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。通俗的说,有限状态机就是规则的描述,包括“状态”和“状态的变化规律”。

举个简单的例子,对于人,我们可以定义四种简单的状态:清醒、昏睡、休克、死亡。同时对这个人,我们可以定义以下操作:电击、安眠药、枪击、拍打、催眠。

通过以上有限的操作,可以使得这个人在有限的状态之间按照一定的规律进行切换。例如,清醒的人,经过催眠会进入昏睡状态;休克的人,经过电击会进入清醒状态;清醒、昏睡、休克的人,经过枪击会进入死亡状态等等。

通过这样的定义(即有限的状态,有限的操作,状态改变规则),我们描述了极其简单的人的特性,并且发现这里的人会进入哪个状态,是由这个人当前的状态和相应的操作决定的。

开心的蜗牛

这里我们假设有一只行走在 01 串上的蜗牛,每当它走过 001 的时候,他会在最后这个 1 的位置上“哈”的笑一声,之后紧接着连续走过1就连续发出“哈”声,直到碰到0

如果用有限状态机来描述这只开心的蜗牛,那么有四个状态:

  1. 不笑;
  2. 准备笑,走过第一个0
  3. 即将笑,走过一个0后,紧接着走过第二个0
  4. 笑,连续走过两个0之后紧接着遇到连续的1

输入有两种可能:

  1. 走过0
  2. 走过1

当蜗牛处于“笑”的状态时,会发出“哈”的一声,其余状态不发出声音,你可以尝试绘制一下状态转换图。

编程要求

根据提示,在右侧编辑器 Begin-End 区域补充代码,用有限状态机的思路实现这只开心的蜗牛,具体要求如下:

  • 输入一串由只由01组成的字符串,表示蜗牛行走的01串;

  • 输出蜗牛发出的“哈哈”笑声,即蜗牛在满足条件时发出的笑声,具体请参考测试说明给出的测试样例;

  • 输出笑声结尾不换行。

测试说明

平台会对你编写的代码进行测试:

测试输入:00011010010001

预期输出:哈哈哈哈

代码如下: 

package step2;
import java.util.Scanner;

public class Main 
{

    final static int STATE_NO_SMALE = 0;
    final static int STATE_PREPARE_SMALE = 1;
    final static int STATE_READY_SMALE = 2;
    final static int STATE_SAMLE = 3;

    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);
        String inStr = input.nextLine();
        input.close();
        assert inStr.charAt(0) == '0';
        assert inStr.charAt(1) == '0';
        // 请在指定位置填写代码。
        /********* Begin *********/
        int flag=0;
        int count=0;
        for (int i=0;i<inStr.length();i++)
        {
            if (i+1<inStr.length())
            {
                if (0==(int) inStr.charAt(i)-48&&0==(int) inStr.charAt(i+1)-48)
                {
                    flag=2;
                }
            }
            if (1==(int) inStr.charAt(i)-48&&flag>=2)
            {
                count++;
                if (i+1<inStr.length())
                {
                    if (0==(int) inStr.charAt(i+1)-48)
                    {
                        flag=0;
                    }
                }
            }
        }
        for(int j=1;j<=count;j++)
        {
            System.out.print("哈");
        }
        /********* End *********/
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失棉的羊 .

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值