Java-数组-数组的遍历

这篇博客介绍了数组遍历的基本技巧,包括如何寻找数组中的最大值以及实现猜数字游戏。此外,还展示了如何通过随机索引交换实现数组的随机排名。接着,博主探讨了冒泡排序算法的原理,并提供了实现示例。文章最后总结了实现随机排名的步骤和数组排序的重要性。

数组遍历

就是一个一个数据的访问

请添加图片描述
快捷方式

  • 在IDEA中 arr.fori 敲回车 就可以显示出来

案例

  1. 如何用遍历求最大值?
 public static void main(String[] args) {
        int[] score={15,9000,9500,10000,0,-5};
        //max存储最大值元素 一般用第一个元素 也就是[0]
        int max = score[0];
        for (int i = 0; i < score.length; i++) {
            if (score[i] >max){
                max = score[i];
            }
        }
        System.out.println(max);
    }

2.猜数字游戏

public class ArrayDemo2 {
    public static void main(String[] args) {
        //定义一个动态初始化的数组存储5个1-20的数据
        int[] data = new int[5];
        //动态的生成5个1-20间随机数存入数组中
        Random r = new Random();
        for (int i = 0; i < data.length; i++) {
            data[i] = r.nextInt(20) + 1;
        }
        //使用一个死循环让用户猜测
        Scanner sc = new Scanner(System.in);
        OUT:
        while(true){
            System.out.println("请您输入一个1-20间的整数");
            int guess = sc.nextInt();
        //遍历数组中的数据
            for (int i = 0; i < data.length; i++) {
                if (data[i]==guess){
                    System.out.println("您已经猜中了 对应索引为: "+ i);
                    break OUT;//结束了整个死循环 代表游戏结束
                }
                System.out.println("当前数据不再数组中 请重新猜测!");
            }
        }
        //输出的全部全素 让用户看到
        for (int i = 0; i < data.length; i++) {
            System.out.println(data[i]+"\t");
        }

3.随机排名

public static void main(String[] args) {
        //
        int [] codes = new int[5];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < codes.length; i++) {
            //正式录入工号
            System.out.println("请您输入第"+(i + 1)+"个员工的工号");
            int code = sc.nextInt();
            codes[i] = code;
        }
        // 遍历数组中每个元素 随机一个索引出来 让元素与索引交换
        Random r = new Random();
        for (int i = 0; i < codes.length; i++) {
            //当前元素值:code[i]
            int index = r.nextInt(codes.length);
            //定义一个临时变量
            int temp = codes[index];
            codes[index] = codes[i];
            codes[i] = temp;
        }
        for (int i = 0; i < codes.length; i++) {
           System.out.println(codes[i] + "\t");
        }
    }

总结

  • 如何实现随机排名?

1.定义一个动态初始化的数组用于录入数据
2.遍历数组中每个元素,每次随机一个索引值,让当前元素与索引位置处元素交换
3.遍历输出数组中的内容即可

数组排序

就是对数组中的元素、进行升序或者降序的操作

技术

  • 冒泡排序
  • 选择排序
  • 快速排序
  • 插入排序

数组搜索相关的技术

  • 二分搜索
  • 分块查找
  • 哈希表查找

冒泡排序

每次从数组中找出最大值放在数组的后面

package traverse;

import java.util.Random;
import java.util.Scanner;

public class ArrayDemo3 {
    public static void main(String[] args) {
        //
        int [] codes = new int[5];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < codes.length; i++) {
            //正式录入工号
            System.out.println("请您输入第"+(i + 1)+"个员工的工号");
            int code = sc.nextInt();
            codes[i] = code;
        }
        // 遍历数组中每个元素 随机一个索引出来 让元素与索引交换
        Random r = new Random();
        for (int i = 0; i < codes.length; i++) {
            //当前元素值:code[i]
            int index = r.nextInt(codes.length);
            //定义一个临时变量
            int temp = codes[index];
            codes[index] = codes[i];
            codes[i] = temp;
        }
        for (int code : codes) {
            System.out.println(code + "\t");
        }
    }
}
<think> 我们已知用户想了解如何通过数组遍历输出字母表。根据引用的内容,我们可以总结出几种方法: 1. 使用循环遍历一个包含字母表的数组,直接输出每个字母。 2. 使用类似桶排序的思想,但这里我们不需要统计,只需要按顺序输出字母。 但是,用户要求输出的是字母表,即从a到z(或A到Z)的26个字母。我们可以创建一个包含这些字母的数组,然后遍历输出。 根据引用[3]中提到的“遍历与复制数组”,我们可以使用循环遍历数组并输出每个元素。 具体步骤: 1. 创建一个数组,存储26个英文字母(小写或大写)。 2. 使用循环(例如for循环)遍历这个数组。 3. 在循环体内输出每个字母。 另外,引用[2]和[引用4]中使用了桶排序的思想来统计字母出现次数并按字母表顺序输出,但这里我们不需要统计,只需要输出字母表本身。 因此,我们可以这样实现: 以输出小写字母表为例: ```c #include <stdio.h> int main() { // 创建一个包含小写字母的数组 char letters[26]; // 初始化数组,从'a'到'z' for (int i = 0; i < 26; i++) { letters[i] = 'a' + i; } // 遍历数组输出每个字母 for (int i = 0; i < 26; i++) { printf("%c ", letters[i]); } return 0; } ``` 或者我们可以直接用一个字符串作为数组: ```c #include <stdio.h> int main() { char letters[] = "abcdefghijklmnopqrstuvwxyz"; // 遍历数组直到字符串结束符(不包括结束符) for (int i = 0; letters[i] != '\0'; i++) { printf("%c ", letters[i]); } return 0; } ``` 在JavaScript中,我们可以这样: ```javascript // 创建字母表数组 let letters = 'abcdefghijklmnopqrstuvwxyz'.split(''); // 或者使用Array.from // let letters = Array.from('abcdefghijklmnopqrstuvwxyz'); // 使用forEach遍历 letters.forEach(letter => { console.log(letter); }); // 或者使用for循环 for (let i = 0; i < letters.length; i++) { console.log(letters[i]); } ``` 在Java中: ```java public class Main { public static void main(String[] args) { char[] letters = new char[26]; for (int i = 0; i < 26; i++) { letters[i] = (char)('a' + i); } // 遍历输出 for (char c : letters) { System.out.print(c + " "); } } } ``` 注意:在Java中也可以直接输出一个字符串,但题目要求通过数组遍历。 因此,核心思想就是先构造字母表数组,然后遍历输出。 如果用户需要输出大写字母表,只需将'a'替换为'A'即可。 根据引用[3],我们还可以使用Arrays.toString输出数组,但注意那会输出一个字符串形式,如[a, b, c, ...],而不是逐个字母输出。所以如果要求每个字母单独一行或空格分隔,还是需要遍历。 综上所述,我们给出了多种语言的实现示例。 现在,根据要求生成相关问题: §§相关问题§§ 1. 如何输出大写字母表? 2. 如何同时输出大小写字母表? 3. 如何逆序输出字母表? </think> ### 通过数组遍历输出字母表的方法 输出字母表的核心是**创建包含字母的数组**并**遍历输出数组元素**。以下是几种实现方法: #### 1. 基础方法(C语言) ```c #include <stdio.h> int main() { // 创建字母表数组 char alphabet[26]; // 填充数组:'a'到'z' for (int i = 0; i < 26; i++) { alphabet[i] = 'a' + i; // ASCII码顺序生成字母 } // 遍历输出 for (int i = 0; i < 26; i++) { printf("%c ", alphabet[i]); // 输出:a b c ... z } return 0; } ``` **关键点**: - 利用字符的ASCII码特性(`'a' + 1 = 'b'`) - 数组索引从0到25对应26个小写字母 #### 2. 直接初始化法(Java) ```java public class Alphabet { public static void main(String[] args) { char[] letters = "abcdefghijklmnopqrstuvwxyz".toCharArray(); for (char c : letters) { System.out.print(c + " "); // 遍历输出 } } } ``` #### 3. 大写字母表(JavaScript) ```javascript // 创建大写字母数组 const capitalLetters = Array.from({length: 26}, (_, i) => String.fromCharCode(65 + i) // 'A'的ASCII码是65 ); // 遍历输出 capitalLetters.forEach(letter => console.log(letter)); // 输出:A B C ... Z ``` #### 4. 双向输出(正序+倒序) ```python # Python实现 letters = [chr(ord('a') + i) for i in range(26)] # 生成小写字母数组 print("正序:", ' '.join(letters)) # 正序输出 print("倒序:", ' '.join(letters[::-1])) # 倒序输出 ``` ### 关键原理 1. **数组构建**: - 使用字符的ASCII码特性(`a-z`:97-122,`A-Z`:65-90) - 通过循环填充数组:`array[i] = 'a' + i` 2. **遍历方式**: - `for`循环配合索引访问 - `forEach`方法(如JavaScript) - 增强`for`循环(如Java的`for-each`) 3. **输出控制**: - 逐字符输出(保留原始顺序) - 逆序遍历实现倒序输出 - 添加分隔符(空格/换行等)[^1][^3] ### 常见应用场景 - 生成密码学中的字母映射表 - 实现字符串排序算法(如桶排序的预处理) - 开发文字游戏中的字母选择器 - 数据清洗时的字符标准化处理[^2][^4] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值