Java基础课 | 数组的倒序与隔位输出
Java基础
数组
概念
用于存储相同数据类型的元素的数据结构。
数据结构:表示了数据在计算中被组织和存储的形式。
数组:一组按照一定次序排列的数值,其中的每一个变量被称为元素。
数组的存储形式:
特点
- 固定大小:数组一旦声明,大小固定,不能再运行时动态更改。
- 相同数据类型
- 连续存储:数组的元素在内存中是连续存储的。
- 下标访问:数组中的元素通过下标(索引)进行访问。索引从 0 开始。使用下标操作符==[ ]==访问元素,也可修改数组中元素的值。
所有数组都拥有一个属性 length,用于获取数组的长度,表示数组中元素的数量。
如int len = nums.lenth;
获取数组nums的长度
定义和使用方法
声明数组的方式为 dataType[] arrayName
或dataType 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 类(容器)
数组的长度固定,但我们往往并不知道一组数据的大小,此时不太能直接使用数组,可以考虑使用 ArrayList
(java.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
:要迭代的数组或其他的对象(如集合)
题目
题目描述
给定一个整数数组,编写一个程序实现以下功能:
- 将输入的整数数组倒序输出,每个数之间用空格分隔。
- 从正序数组中,每隔一个单位(即索引为奇数的元素),输出其值,同样用空格分隔。
输入描述
第一行包含一个整数 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();
}
}