蓝桥杯java速成Day1

刷题规划

蓝桥杯 Java 组

第 1~7 天刷题清单(入门基础版,直接照刷)

每天 **6 题**,一周 42 题,稳扎稳打。

第 1 天:输入输出 + 简单循环

  1. 输出 Hello World

  2. 输入两个整数,求和

  3. 输入一个整数,判断奇偶

  4. 输出 1~100 的和

  5. 输入 n,输出 1~n 的所有数

  6. 输入 n,求 1~n 的和

第 2 天:一维数组基础

  1. 输入 n 个数,求最大值

  2. 输入 n 个数,求最小值

  3. 求数组所有元素的和

  4. 数组元素逆序存放并输出

  5. 查找某个数在数组中第一次出现的位置

  6. 统计数组中正数、负数、0 的个数

第 3 天:二维数组入门

  1. 输出一个 3×3 矩阵

  2. 求二维数组所有元素和

  3. 求矩阵每行的最大值

  4. 求矩阵每列的和

  5. 矩阵转置(行变列)

  6. 输出主对角线元素

第 4 天:字符串基础

  1. 统计字符串长度

  2. 判断两个字符串是否相等

  3. 字符串反转

  4. 统计字符串中字母、数字、空格个数

  5. 查找子串第一次出现的位置

  6. 把字符串全部转大写/小写

第 5 天:字符串 + 简单模拟

  1. 去掉字符串所有空格

  2. 提取字符串中的数字并求和

  3. 判断字符串是否是回文

  4. 统计某字符出现次数

  5. 字符串替换(把 a 换成 b)

  6. 按空格分割字符串并输出

第 6 天:简单数学题

  1. 判断一个数是否是质数

  2. 求两个数的最大公约数

  3. 求两个数的最小公倍数

  4. 十进制转二进制

  5. 二进制转十进制

  6. 求 1~n 中所有质数

第 7 天:综合小模拟(蓝桥杯必考风格)

  1. 输入年月日,计算是这一年的第几天

  2. 统计一个整数中 0~9 每个数字出现几次

  3. 输入一个数,判断是否是回文数

  4. 求斐波那契数列第 n 项

  5. 打印九九乘法表

  6. 输入一个字符串,按字典序排序输出

用一个代码讲清楚关于数组的代码题

java 复制代码
import java.util.Scanner;

public class ArrayOperations {
    public static void main(String[] args) {
        // 定义一个示例数组(也可以改为用户输入)
        int[] arr = {12, -5, 0, 8, -3, 0, 15, -9, 7};
        System.out.println("原始数组:");
        printArray(arr); // 打印原始数组,方便对比
        
        // 1. 求数组所有元素的和
        int sum = calculateArraySum(arr);
        System.out.println("\n1. 数组所有元素的和:" + sum);
        
        // 2. 数组元素逆序存放并输出
        int[] reversedArr = reverseArray(arr);
        System.out.println("2. 数组逆序后:");
        printArray(reversedArr);
        
        // 3. 查找某个数在数组中第一次出现的位置
        Scanner sc = new Scanner(System.in);
        System.out.print("\n3. 请输入要查找的数字:");
        int target = sc.nextInt();
        int index = findFirstOccurrence(arr, target);
        if (index != -1) {
            System.out.println("数字 " + target + " 第一次出现的位置(索引):" + index);
        } else {
            System.out.println("数字 " + target + " 不在数组中");
        }
        
        // 4. 统计数组中正数、负数、0 的个数
        countPositiveNegativeZero(arr);
        
        sc.close(); // 关闭Scanner
    }

    /**
     * 功能1:计算数组所有元素的和
     * @param arr 待计算的数组
     * @return 数组元素的总和
     */
    public static int calculateArraySum(int[] arr) {
        int sum = 0;
        for (int num : arr) { // 增强for循环遍历数组
            sum += num; // 累加每个元素
        }
        return sum;
    }

    /**
     * 功能2:将数组元素逆序存放并返回新数组(不修改原数组)
     * @param arr 原始数组
     * @return 逆序后的新数组
     */
    public static int[] reverseArray(int[] arr) {
        int[] reversed = new int[arr.length]; // 创建和原数组长度相同的新数组
        for (int i = 0; i < arr.length; i++) {
            // 原数组第i个元素 → 逆序数组的第(arr.length-1-i)个位置
            reversed[i] = arr[arr.length - 1 - i];
        }
        return reversed;
    }

    /**
     * 功能3:查找某个数在数组中第一次出现的位置(索引)
     * @param arr 待查找的数组
     * @param target 要查找的数字
     * @return 第一次出现的索引(不存在返回-1)
     */
    public static int findFirstOccurrence(int[] arr, int target) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == target) { // 找到第一个匹配的元素
                return i; // 立即返回索引
            }
        }
        return -1; // 未找到返回-1
    }

    /**
     * 功能4:统计数组中正数、负数、0 的个数并输出
     * @param arr 待统计的数组
     */
    public static void countPositiveNegativeZero(int[] arr) {
        int positive = 0; // 正数个数
        int negative = 0; // 负数个数
        int zero = 0;     // 0的个数
        
        for (int num : arr) {
//num 是增强 for 循环(也叫 for-each 循环) 中定义的临时变量
//专门用来接收数组遍历过程中 "当前循环到的元素值",我用最通俗的方式给你讲清楚:
            if (num > 0) {
                positive++;
            } else if (num < 0) {
                negative++;
            } else {
                zero++;
            }
        }
        
        // 输出统计结果
        System.out.println("\n4. 数组统计结果:");
        System.out.println("正数个数:" + positive);
        System.out.println("负数个数:" + negative);
        System.out.println("0的个数:" + zero);
    }

    /**
     * 辅助方法:打印数组(方便查看结果)
     * @param arr 待打印的数组
     */
    public static void printArray(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
            if (i != arr.length - 1) {
                System.out.print(", "); // 元素间加逗号分隔
            }
        }
        System.out.println();
    }
}

代码关键解释

  1. 计算数组元素和(功能 3)

使用 增强 for 循环(for (int num : arr))遍历数组,语法简洁,无需关注索引;

初始化总和变量 sum = 0,逐个累加数组元素,最终返回总和。

  1. 数组逆序存放(功能 4)

创建一个和原数组长度相同的新数组 reversed,避免修改原数组;

核心逻辑:reversed[i] = arr[arr.length - 1 - i],将原数组末尾元素放到新数组开头。

  1. 查找数字第一次出现的位置(功能 5)

用普通 for 循环遍历数组(需要索引),找到第一个匹配的元素立即返回索引;

若遍历结束未找到,返回 -1(这是编程中表示 "未找到" 的通用约定)。

  1. 统计正数 / 负数 / 0 的个数(功能 6)

定义 3 个计数器变量,遍历数组时通过 if-else if-else 判断元素类型,对应计数器自增;

最后打印统计结果,逻辑直观易懂。

相关推荐
米粒12 小时前
力扣算法刷题 Day 15
算法·leetcode·职场和发展
困死,根本不会3 小时前
蓝桥杯 Python 备考全攻略:从入门到进阶的学习路线
笔记·python·学习·算法·蓝桥杯
仟濹4 小时前
【算法打卡day26(2026-03-18 周三)今日算法:「回溯算法」& 蓝桥杯真题(简单题型)】7个
算法·蓝桥杯
aloha_7895 小时前
金山云测试面试准备
面试·职场和发展
無限進步D5 小时前
差分算法 cpp
c++·算法·蓝桥杯·竞赛
小涛不学习5 小时前
JVM 深度解析(面试 + 实战版)
jvm·面试·职场和发展
程序员小远5 小时前
单元测试知识详解
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
小涛不学习5 小时前
JVM 面试核心知识全解析(从原理到实战)
jvm·面试·职场和发展
代码雕刻家6 小时前
2.5.第十六届蓝桥杯大赛软件赛省赛Java 大学 B 组(上)
职场和发展·蓝桥杯