数组扩容
import java.util.Scanner;
//数组扩容
public class ArrayExpansion{
public static void main(String[] args){
// 定义初始数组 arr = { 1 , 2 , 3 }
// 定义新的数组 int[] arrNew = new int[arr.length + 1]
// 将arr中元素的值拷贝到arrNew中
// 将要添加的值 添加到arrNew中 arrNew[arrNew.length - 1]
// 让arr指向arrNew
int[] arr = { 1 , 2 , 3 } ;
int[] arrNew = new int[arr.length + 1];
for(int i = 0 ; i < arr.length ; i++){
arrNew[i] = arr[i];
}
arrNew[arrNew.length - 1] = 4;
arr = arrNew;
for(int i = 0 ; i < arrNew.length ; i++){
System.out.print(arr[i] + " ");
}
}
}
class ArrayExpansion02{
public static void main(String[] args){
// 将上述代码改成可以动态添加任意长度
int[] arr = { 1 , 2 , 3 }; // 初始数组
boolean flag = false; // 判断数组是否扩容
Scanner sc = new Scanner(System.in);
System.out.println("原数组为:");
for(int i = 0 ; i < arr.length ; i++){
System.out.print(arr[i] + " ");
}
System.out.println("");
while(true){
System.out.println("请问要扩容数组吗? y/n");
// sc.next() 获取的是一个字符串
// charAt(Index) 获取字符串中索引为Index的字符,Index从零开始
char input = sc.next().charAt(0);
if(input == 'Y'){
input = (char)('Y' + 32);
}else if(input == 'N'){
input = (char)('N' + 32);
}
if(input == 'n'){
System.out.println("退出!");
break;
}else{ // input == 'y'
System.out.println("请输入要增加的长度:");
int len = sc.nextInt();
int[] arrNew = new int[arr.length + len];
// 将原数组拷贝到新数组中
for(int i = 0 ; i < arr.length ; i++){
arrNew[i] = arr[i];
}
for(int i = arr.length ; i < arrNew.length ; i++){
System.out.println("请输入要添加的元素的值:");
int num = sc.nextInt();
arrNew[i] = num;
}
arr = arrNew; // 让旧数组指向新的扩容后的数组
System.out.println("扩容后的数组为:");
for(int i = 0 ; i < arr.length ; i++){
System.out.print(arr[i] + " ");
}
System.out.println("\n");
}
}
}
}
运行结果:
数组缩减
import java.util.Scanner;
//数组缩减
public class ArrayReduction{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int[] arr = { 1 , 2 , 3 } ;
//原数组
System.out.println("原数组为:");
for(int i = 0 ; i < arr.length ; i++){
System.out.print(arr[i] + " ");
}
System.out.println("");
while(true){
if(arr.length == 1){
System.out.println("数组长度已缩减到最小,无法再继续缩减。");
break;
}
System.out.println("请问要缩减数组吗?y/n");
char input = sc.next().charAt(0);
if(input == 'n'){
System.out.println("退出!");
break;
}else{
//缩减数组
int[] arrNew = new int[arr.length - 1];
for(int i = 0 ; i < arrNew.length ; i++){
arrNew[i] = arr[i];
}
arr = arrNew;
System.out.println("arr.length = " + arr.length);
System.out.println("缩减后的数组为:");
for(int i = 0 ; i < arr.length ; i++){
System.out.print(arr[i] + " ");
}
System.out.println("");
}
}
}
}