输入数组并且不知道数组长度的解决方案

在Java编程中,有时我们需要输入一个数组,但是却不知道数组的长度。这种情况下,我们需要动态地获取用户输入的数据,并将其存储在一个数组中。本文将介绍如何在Java中实现这样的功能,让我们一起来看看吧。

解决方案

为了实现动态输入数组并且不知道数组长度的功能,我们可以使用ArrayList类,它是Java中的一个动态数组类。ArrayList类具有可以自动增长和缩减容量的特性,因此非常适合处理不确定长度的数组。

我们可以按照以下步骤来实现这个功能:

  1. 创建一个ArrayList对象来存储用户输入的数据。
  2. 使用Scanner类来获取用户输入的数据。
  3. 将用户输入的数据添加到ArrayList中。
  4. ArrayList转换为数组。

下面我们来看具体的代码实现。

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

public class DynamicArrayInput {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);

        System.out.println("Please enter the numbers (enter -1 to stop):");

        while (true) {
            int num = scanner.nextInt();
            if (num == -1) {
                break;
            }
            list.add(num);
        }

        // Convert ArrayList to array
        int[] array = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            array[i] = list.get(i);
        }

        System.out.println("Array elements:");
        for (int num : array) {
            System.out.print(num + " ");
        }
    }
}

在上面的代码中,我们首先创建了一个ArrayList对象list来存储用户输入的数据,然后使用Scanner类来获取用户输入的数据。我们使用一个while循环来不断获取用户输入的数据,当用户输入-1时,结束循环。接着,我们将ArrayList转换为数组array,并输出数组中的元素。

示例

让我们看一个实际的例子来演示上面的代码。

假设我们想要输入一组数字并计算它们的平均值,但不知道输入的数字个数。我们可以使用上面的代码来实现这个功能。

Please enter the numbers (enter -1 to stop):
5
8
10
-1

输出结果:

Array elements:
5 8 10

平均值为(5 + 8 + 10) / 3 = 7.67

流程图

下面是输入数组并且不知道数组长度的流程图:

flowchart TD
    Start --> 输入数字
    输入数字 --> 数字不为-1 --> 添加数字到ArrayList
    数字不为-1 --> 输入数字
    数字为-1 --> 转换ArrayList为数组
    转换ArrayList为数组 --> 输出数组元素
    输出数组元素 --> Stop

序列图

下面是输入数组并且不知道数组长度的序列图:

sequenceDiagram
    participant User
    participant Program
    User ->> Program: 输入数字
    loop
        Program ->> Program: 数字不为-1
        Program ->> Program: 添加数字到ArrayList
    end
    Program ->> Program: 转换ArrayList为数组
    Program ->> User: 输出数组元素

结论

通过使用ArrayList类,我们可以很方便地实现输入数组并且不知道数组长度的功能。这种方法既简单又灵活,可以满足我们在编程中遇到的这种需求。希望本文对你有所帮助,谢谢阅读!