java如何设置数组长度为键盘录入的长度

java如何设置数组长度为键盘录入的长度

作者:Joshua Lee发布时间:2026-02-04阅读时长:0 分钟阅读次数:11

用户关注问题

Q
如何根据用户输入动态创建Java数组?

我想根据用户通过键盘输入的长度来创建一个Java数组,应该怎样实现?

A

使用Scanner获取输入并创建数组

可以使用Scanner类来读取用户输入的数组长度,然后根据输入的值创建相应大小的数组。例如:

import java.util.Scanner;

public class ArrayInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入数组长度:");
        int length = scanner.nextInt();
        int[] array = new int[length];
        System.out.println("数组长度已设置为:" + array.length);
        scanner.close();
    }
}
Q
如何处理用户输入非整数导致数组长度异常的情况?

用户输入长度时如果输入了非整数怎么办?如何避免程序崩溃?

A

添加输入验证和异常处理保证程序健壮

通过使用try-catch块捕获输入异常,再结合循环提示用户重新输入,能避免程序因为格式错误崩溃。示例代码如下:

import java.util.Scanner;

public class SafeArrayInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int length = 0;
        while (true) {
            try {
                System.out.print("请输入数组长度:");
                length = Integer.parseInt(scanner.nextLine());
                if (length > 0) {
                    break;
                } else {
                    System.out.println("长度必须是正整数,请重新输入。");
                }
            } catch (NumberFormatException e) {
                System.out.println("输入无效,请输入一个整数。");
            }
        }
        int[] array = new int[length];
        System.out.println("成功创建长度为 " + length + " 的数组。");
        scanner.close();
    }
}
Q
Java数组长度能否在运行时修改?

创建数组后可以调整数组的大小以适应录入数据的变化吗?

A

Java数组长度不可变,采用集合类替代

Java中的数组在创建时确定长度,不能在运行时改变。如果需要动态调整大小,可以使用ArrayList等集合类,它们可以根据需要自动扩容。例如:

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

public class DynamicArrayExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        ArrayList<Integer> list = new ArrayList<>();
        System.out.println("请输入整数,输入非数字结束:");
        while (scanner.hasNextInt()) {
            list.add(scanner.nextInt());
        }
        System.out.println("输入的数字列表:" + list);
        scanner.close();
    }
}