Java基础课 | 数组的倒序与隔位输出

Java基础


数组

概念

用于存储相同数据类型的元素数据结构

数据结构:表示了数据在计算中被组织和存储的形式。
数组:一组按照一定次序排列的数值,其中的每一个变量被称为元素

数组的存储形式:
数组的存储形式

特点

  • 固定大小:数组一旦声明,大小固定,不能再运行时动态更改。
  • 相同数据类型
  • 连续存储:数组的元素在内存中是连续存储的。
  • 下标访问:数组中的元素通过下标(索引)进行访问。索引从 0 开始。使用下标操作符==[ ]==访问元素,也可修改数组中元素的值。

所有数组都拥有一个属性 length,用于获取数组的长度,表示数组中元素的数量。
int len = nums.lenth; 获取数组nums的长度

定义和使用方法

声明数组的方式为 dataType[] arrayNamedataType arrayName[]

dataType[] arrayName:Java中常用
dataType arrayName[]:更符合C++的编程习惯

声明数组:仅声明,既没有为数组指定大小,也没有为数组填充数据(此时数组在计算机中并没有开辟内存空间)

int[] nums; // 声明一个整数数组
double scores[]; // 声明一个浮点数数组

对数组进行初始化:为数组分配存储空间。包括动态初始化和静态初始化。

  • 动态初始化:在声明数组后,使用new关键字来分配内存并初始化数组元素。
int[] nums = new int[3]; //动态初始化一个包含3个整数的数组
  • 静态初始化:在声明数组时,同时为数组分配内存并指定初始值。
int[] nums = {1,2,3}; //静态初始化一个包含初始值的整数数组

! 当数组越界时,Java会抛出运行时错误(异常)

ArrayList 类(容器)

数组的长度固定,但我们往往并不知道一组数据的大小,此时不太能直接使用数组,可以考虑使用 ArrayListjava.util包中的一个类,可以在运行时对其动态添加和删除元素)。

集合类只能存储对象,而非原始数据类型。

使用方法:

//创建
ArrayList<Integer> nums = new ArrayList<Integer>();

//添加元素:add 方法
nums.add(10);
//获取ArrayList中的元素:get方法,索引从0开始
int firstNumber = nums.get(0);//获取第1个元素
//删除其中对应的元素:remove方法
nums.remove(1);//删除第二个元素

//获取其中的元素数量:size方法
int size = nums.size();

//遍历方法:与对数组的遍历相同,通过for循环
for (int i = 0; i <  nums.size(); i++) {
	System.out.println(nums.get(i));
}

for (Integer num : nums) {
	System.out.println(num);
}

增强型 for 循环

更为简洁易读,基本语法:

for (elementType element : collection) {
	// 在此处处理 element
}
  • elementType:元素的数据类型
  • element:在每次迭代中表示一个元素的变量
  • collection:要迭代的数组或其他的对象(如集合)

题目


题目描述
给定一个整数数组,编写一个程序实现以下功能:

  1. 将输入的整数数组倒序输出,每个数之间用空格分隔。
  2. 从正序数组中,每隔一个单位(即索引为奇数的元素),输出其值,同样用空格分隔。

输入描述
第一行包含一个整数 n,表示数组的长度。
接下来一行包含 n 个整数,表示数组的元素。

输出描述
首先输出倒序排列的数组元素,然后输出正序数组中每隔一个单位的元素。

程序编写


使用ArrayList的写法:

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // 定义一个整型ArrayList
        ArrayList<Integer> nums = new ArrayList<Integer>();
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt(); // 输入数组长度

        // 循环输入数组中的数字
        while (n-- > 0) {
            while (scanner.hasNextInt()) {
                int num = scanner.nextInt();
                // 使用add方法动态添加数组元素
                nums.add(num);
            }
        }

        // 倒序输出数组元素,每个数之间用空格分隔,使用size()表示ArrayList的大小
        for (int i = nums.size() - 1; i >= 0; i--) {
            System.out.print(nums.get(i));
            if (i > 0) {
                System.out.print(" ");
            }
        }
        System.out.println(); // 换行

        // 隔位输出数组元素,中间用空格分隔,使用size()表示ArrayList的大小
        for (int i = 0; i < nums.size(); i += 2) {
            System.out.print(nums.get(i));
            if (i < nums.size() - 1) {
                System.out.print(" ");
            }
        }

        // 关闭Scanner
        scanner.close();
    }
}
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值