29、编程中的数组应用与实践

编程中的数组应用与实践

1. 数组图形绘制

1.1 创建图形绘制程序

首先,我们要创建一个程序来绘制存储在 temperatures 数组中的值的图形。操作步骤如下:
1. 选择 File > New 开始一个新程序,并将其保存为 GraphTemps
2. 定义温度数组:

int[] temperatures = {57, 10, 32, 78, 212, 101};
  1. 设置画布大小为 250 像素×250 像素:
size(250, 250);
  1. 创建变量存储图形相关参数:
int spaceBetween = 35; // 相邻条形图顶部之间的距离
int barHeight = 10;    // 每个条形图的高度

1.2 绘制条形图

使用 for 循环遍历数组,绘制每个条形图:

int barTop;
for (int count = 0; count < temperatures.length; count = count + 1) {
    fill(255, 0, 0); // 设置填充颜色为红色
    barTop = (count + 1) * spaceBetween;
    rect(0, barTop, temperatures[count], barHeight); // 绘制矩形
}

1.3 添加文本标注

在每个条形图的末尾添加黑色文本标注:

for (int count = 0; count < temperatures.length; count = count + 1) {
    fill(255, 0, 0); // 红色
    barTop = (count + 1) * spaceBetween;
    rect(0, barTop, temperatures[count], barHeight);
    fill(0, 0, 0); // 黑色
    text(temperatures[count], temperatures[count], barTop); // 添加文本
}

完整代码如下:

int[] temperatures = {57, 10, 32, 78, 212, 101};
size(250, 250);
int spacer = 35;
int barHeight = 10;
int barTop;
for (int count = 0; count < temperatures.length; count = count + 1) {
    fill(255, 0, 0); // 红色
    barTop = (count + 1) * spacer;
    rect(0, barTop, temperatures[count], barHeight);
    fill(0, 0, 0); // 黑色
    text(temperatures[count], temperatures[count], barTop);
}

2. 使用 new 运算符声明和创建数组

2.1 已知值创建数组

可以直接指定数组元素的值来创建数组:

int[] temperatures = {57, 10, 32, 78, 212, 101};
printArray(temperatures);

2.2 未知值创建数组

当不知道数组具体元素值时,使用 new 运算符:

int[] temperatures = new int[6];
printArray(temperatures);

此操作会使 Processing 执行以下步骤:
1. 在计算机内存中为一个包含六个 int 值的新数组预留位置。
2. 将新数组在计算机内存中的地址存储在 temperatures 变量中。
3. 将新数组的所有元素初始化为 0( int 数组的默认值)。

2.3 不同数据类型数组的默认值

不同数据类型的数组有不同的默认值,如下表所示:
| 数据类型 | 默认值 |
| ---- | ---- |
| int | 0 |
| float | 0.0 |
| char | Unicode 编号为 0 的字符(空字符) |
| String | null |
| boolean | false |

例如,创建 float 类型数组:

float[] temperatures = new float[6];
printArray(temperatures);

此时数组元素默认值为 0.0。

3. 模拟 Yahtzee 游戏

3.1 初始化骰子数组

创建一个程序模拟 Yahtzee 游戏,首先声明一个数组来存储五个骰子的值:

int[] dice = new int[5];
printArray(dice);

初始时,数组元素都为 0。

3.2 为骰子数组赋值随机数

使用 for 循环为每个骰子赋值 1 到 6 之间的随机整数:

for (int count = 0; count < dice.length; count = count + 1) {
    dice[count] = int( random(1, 7) );
}
printArray(dice);

3.3 模拟多次掷骰子直到出现 Yahtzee

使用 do-while 循环模拟多次掷骰子,直到五个骰子的值相同:

int[] dice = new int[5];
do {
    for (int count = 0; count < dice.length; count = count + 1) {
        dice[count] = int( random(1, 7) );
        print(dice[count] + " ");
    }
    println();
} while ( min(dice) != max(dice) );

3.4 统计掷骰子次数

添加一个变量来统计掷骰子的次数:

int[] dice = new int[5];
int rolls = 0;
do {
    for (int count = 0; count < dice.length; count = count + 1) {
        dice[count] = int( random(1, 7) );
        print(dice[count] + " ");
    }
    rolls = rolls + 1;
    println();
} while ( min(dice) != max(dice) );
println("Number of rolls: " + rolls);

4. 循环计数器变量命名与运算符

4.1 循环计数器变量命名

有经验的程序员常使用单字母(如 i )作为 for 循环的计数器变量:

for (int i = 0; i < dice.length; i = i + 1) {
    dice[i] = int( random(1, 7) );
}

但对于初学者,使用描述性的变量名更好。

4.2 增量和减量运算符

Processing 提供了增量( ++ )和减量( -- )运算符,用于增加或减少变量的值:

// 增量运算符
for (int count = 0; count < 5; count++) {
    // 循环体
}

// 减量运算符
for (int count = 5; count > 0; count--) {
    // 循环体
}

不过,这些运算符可能会使代码对初学者来说可读性降低,且可能导致初学者忘记可以以其他增量或减量方式操作计数器变量。

5. 输入字符串数组

5.1 固定大小数组输入

我们可以创建一个由非数字类型元素组成的数组,例如输入学生姓名到一个字符串数组中。操作步骤如下:
1. 选择 File > New 开始一个新程序,并将其保存为 StringArray
2. 导入使用对话框所需的语句:

import static javax.swing.JOptionPane.*;
  1. 声明一个 String 类型的数组来存储学生姓名:
String[] students = new String[4];
  1. 使用 for 循环多次输入学生姓名:
for (int count = 0; count < students.length; count = count + 1) {
    students[count] = showInputDialog("Enter name of student:");
}
  1. 显示输入的学生姓名列表:
printArray(students);

完整代码如下:

import static javax.swing.JOptionPane.*;
String[] students = new String[4];
for (int count = 0; count < students.length; count = count + 1) {
    students[count] = showInputDialog("Enter name of student:");
}
printArray(students);

5.2 动态大小数组输入

为了让用户可以指定要输入的学生数量,我们可以对程序进行修改:

import static javax.swing.JOptionPane.*;
String input = showInputDialog("Number of students:");
int size;
size = int(input);
String[] students = new String[size];
for (int count = 0; count < students.length; count = count + 1) {
    students[count] = showInputDialog("Enter name of student:");
}
printArray(students);

运行这个程序时,用户首先会被询问要输入的学生数量,然后程序会创建相应大小的数组,并多次提示用户输入学生姓名。

6. 总结与流程图

6.1 知识总结

本文主要介绍了数组在编程中的多种应用,包括:
- 如何使用数组中的数据绘制图形,涉及设置画布、绘制条形图和添加文本标注。
- 使用 new 运算符声明和创建数组,以及不同数据类型数组的默认值。
- 模拟 Yahtzee 游戏,包括初始化骰子数组、为数组元素赋值随机数、模拟多次掷骰子直到出现 Yahtzee 以及统计掷骰子次数。
- 循环计数器变量的命名和增量、减量运算符的使用。
- 输入字符串数组,包括固定大小和动态大小数组的输入方法。

6.2 流程图

下面是模拟 Yahtzee 游戏直到出现 Yahtzee 的 mermaid 流程图:

graph TD;
    A[开始] --> B[初始化骰子数组];
    B --> C[掷骰子并打印结果];
    C --> D{是否所有骰子值相同};
    D -- 否 --> C;
    D -- 是 --> E[结束];

通过这些内容,我们可以看到数组在不同场景下的灵活应用,以及如何使用循环、运算符等工具来处理数组数据,希望这些知识能帮助你更好地理解和运用数组编程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值