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

第1关:批量打印 ASCII 码

任务描述

本关任务:掌握使用 while 语句实现循环结构的方法,并编写一个程序,输出所有字母的 ASCII 码及其对应的字符。

相关知识

完成本关任务,你需要学习以下知识:

  1. while 循环语法;

  2. ASCII 码;

  3. 字符强制类型转换。

while 循环语法

while 语句是 Java 实现循环控制结构的一种基本语句。while 语句的关键点在于“循环控制”以及“循环体”,“循环控制”定义了重复多少次,而“循环体”则定义了每次重复执行的动作。

while 循环语法如下:

  1. while(循环继续的条件){
  2. 语句(组)
  3. }

在这里, 当循环继续的条件为 true 的时候,则执行一遍循环体(即花括号中的部分)中的语句(组)。执行完毕后再判断循环继续的条件,直到判断结果为 false ,退出循环。

可见,通过设计循环继续的条件,我们能够得到合适的循环控制;而设计 while 语句括号中的语句(组),我能够控制每次循环的动作。 例如如下语句:

  1. /** 代码清单 1 */
  2. int count = 0;
  3. while(count < 100){
  4. System.out.println("Welcome to Java");
  5. count++;
  6. }

执行代码清单 1,会输出 100 行 Welcome to Java

图 1. while 语句执行流程

“循环控制”是 count < 100,而在执行 while 语句之前,count的值是0,直到count变量的值增加至 100 时, count < 100 的结果是 false ,因此循环体中的语句会被执行。

而循环体中包含两条语句(代码清单 1中的第 4、5行),分别输出字符出Welcome to Java和使得count自增 1。因此,不断的循环会不断的输出字符串,并使得count不断的加 1。直到count < 100这个循环控制条件不再成立,才退出 while 语句,此时已经循环了 100 次,故输出了 100 行Welcome to Java

ASCII 码

本关的任务是对 ASCII 码的批量输出,如果你还不了解什么是 ASCII 码,那么以下介绍会给你一个大概的认识。 ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。ASCII 第一次以规范标准的类型发表是在 1967 年,最后一次更新则是在 1986 年,到目前为止共定义了 128 个字符。

需要注意的是, ASCII 码在计算机中用 8 bit 表示,只能表示 128 个字符,码的范围从 0 到 127。

简言之,就是用一个字节(8 bit,对应十进制范围 0(全零) 到 127(全一))来表示 128 个字符。 例如,字母表中的 A,其 ASCII 码是 65(十进制),然后 B 是 66。还有小写的 a,其 ASCII 码是 97。

字符强制类型转换

完成本关任务,你需要根据数字,输出对应的 ASCII 码,因此可能会用到以下字符强制类型转换的知识。 char 型数据可以转换成任意一种数值类型,反之亦然。将整数转换成 char 型数据时,只用到该数据的低十六位,其余部分都被忽略。以下给出例子:

  1. char letter = (char)0XAB0041; // 此时会截取低位进行赋值
  2. System.out.print(letter);

输出: A

  1. char letter = (char)65; // 十进制数 65 会被赋值给变量
  2. System.out.print(letter);

输出: A

  1. int code = (int)'A'; // 'A' Unicode 码会被赋值给变量
  2. System.out.print(code);

输出: 65

编程要求

根据提示,在右侧编辑器 Begin-End 区域补充代码,实现批量输出 ASCII 码中字母表的功能。具体要求如下:

  • 输入两个int类型的数,代表 ASCII 码开头和结尾的位置,代表标识范围;

  • 然后根据输入标识的范围依次输出 ASCII 码中字母部分的字符。字母表范围是从 65(A)到 90 (Z)以及从 97(a)到 122(z)的部分。输出标识范围于字母表范围重合的部分,并按 ASCII 码从小到大的顺序;

  • 输出的字符各占一行,每行先输出十进制 ASCII 码,然后输出对应字符,中间 1 个空格连接。输出末尾有换行。

测试说明

平台会对你编写的代码进行测试: 预期输入:65 122

预期输出:

  1. 65 A
  2. 66 B
  3. 67 C
  4. 68 D
  5. 69 E
  6. 70 F
  7. 71 G
  8. 72 H
  9. 73 I
  10. 74 J
  11. 75 K
  12. 76 L
  13. 77 M
  14. 78 N
  15. 79 O
  16. 80 P
  17. 81 Q
  18. 82 R
  19. 83 S
  20. 84 T
  21. 85 U
  22. 86 V
  23. 87 W
  24. 88 X
  25. 89 Y
  26. 90 Z
  27. 97 a
  28. 98 b
  29. 99 c
  30. 100 d
  31. 101 e
  32. 102 f
  33. 103 g
  34. 104 h
  35. 105 i
  36. 106 j
  37. 107 k
  38. 108 l
  39. 109 m
  40. 110 n
  41. 111 o
  42. 112 p
  43. 113 q
  44. 114 r
  45. 115 s
  46. 116 t
  47. 117 u
  48. 118 v
  49. 119 w
  50. 120 x
  51. 121 y
  52. 122 z

代码如下

package step1;

import java.util.Scanner;
public class PrintAscii 
{
    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);
        int begin =  input.nextInt();
        int end = input.nextInt();
        input.close();
        //请在指定位置填写代码。
        /********* Begin *********/
        if(begin<65)
        begin=65;
        else if(begin>122)
        begin=122;
        if(end<65)
        end=65;
        else if(end>122)
        end=122;
        while(begin<=end)
        {
            if(begin<=90)
            {
            char ascll = (char)begin;
            System.out.println(begin + " "+ ascll);
            begin++;
            }
            else
            {
                int k;
                k=begin+6;
                if(k<=end)
                {
                    char ascll = (char)k;
                    System.out.println(k + " "+ ascll);
                    begin++;
                }
                else 
                break;
            }
        }
        /********* End *********/
    }
}

第2关:计算平均数

任务描述

本关任务:进一步巩固使用 while 编写循环结构的技能,并编写一个程序,实现若干整数求平均数的功能。

相关知识

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

  1. 平均数;

  2. while 循环的标记值控制。

平均数

平均数的求法为:所有数的和除以数的个数。 例如如下数字: 1 2 3 4 5 6 以上 6 个数的平均数为: (1+2+3+4+5+6)/6

while 循环的标记值控制

while 循环写法的特性之一,是可以通过标记值来灵活的控制循环的次数,对于一些循环次数不确定的场景,十分方便。 例如,不断的读取控制台输入的整数,直到读取到 0 为止。

  1. /** 代码清单 1 */
  2. Scanner input = new Scanner(System.in);
  3. int data = input.nextInt();
  4. while(data != 0){
  5. data = input.nextInt();
  6. }

通过代码清单 1所示的写法,我们就实现了一种循环读取控制台输入的功能。直到读取到了某种约定好的输入,才终止循环。

编程要求

根据提示,在右侧编辑器 Begin-End 区域补充代码,实现若干整数求平均数。具体要求如下:

  • 输入若干的非 0 整数,直到输入数字 0 才认为输入结束;

  • 针对输入的若干的非零整数,输出其平均数;

  • 结果保留小数点后 2 位,末尾无换行。

测试说明

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

测试输入:5 5 5 5 5 0; 预期输出: 5.00

测试输入:0;                   预期输出: 0.00

代码如下

package step2;
import java.util.Scanner;

public class Mean 
{
    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);
        Double mean = 0.0;
        int num = input.nextInt();
        int count = 0;
        Double sum = 0.0;

        //请在指定位置填写代码。
        /********* Begin *********/
        while(num !=0)
        {
            sum=sum+num;
            count++;
            mean = sum/count;
            num = input.nextInt();
        }
        /********* End *********/

        System.out.print(String.format("%.2f", mean));
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

失棉的羊 .

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

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

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

打赏作者

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

抵扣说明:

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

余额充值