当前位置: 首页 > 面试题库 >

输入数组而不知道其大小

边桐
2023-03-14
问题内容

有没有一种方法可以在Java中创建数组,而无需先定义或要求其长度?

再次,用户输入一些数字作为参数,然后程序创建了一个包含这么多参数的数组。


问题答案:

有没有一种方法可以在Java中创建数组,而无需先定义或要求其长度?再次,用户输入一些数字作为参数,然后程序创建了一个包含这么多参数的数组。

目前尚不清楚您所处的状态。如果您知道执行时的数组长度而不是编译时的数组长度,那就可以了:

public class Test {
    public static void main(String[] args) {
        int length = Integer.parseInt(args[0]);
        String[] array = new String[length];
        System.out.println("Created an array of length: " + array.length);
    }
}

您可以将其运行为:

java Test 5

它将创建一个长度为5的数组。

如果在创建之前 确实
不知道数组的长度,例如,如果您要询问用户元素,然后在完成时让他们输入一些特殊值,那么您可能想要使用List某种,例如ArrayList

例如:

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

public class Test {
    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Enter numbers, with 0 to end");
        List<Integer> list = new ArrayList<>();
        while (true) {
            int input = scanner.nextInt();
            if (input == 0) {
                break;
            }
            list.add(input);
        }
        System.out.println("You entered: " + list);
    }    
}

然后,您 可以List根据需要将其转换为数组,但理想情况下,可以继续将其用作List



 类似资料:
  • 如何从我知道行大小但不知道列大小的标准输入中打印二维数组? 标准输入的第一行是行大小,接下来的几行是行数,每个列元素的输入用空格分隔。例如 这就是我正在用我的代码尝试的

  • 问题内容: 我仍然有点儿纠结于golang中的接口。是否可以通过单个“通用”通道发送多种不同类型的数据? 这是一个非常简单的示例:http : //play.golang.org/p/7p2Bd6b0QT。 问题答案: 是的,有可能。例如,在您的代码中,您可以使用: 然后,您将能够无缝发送任何实现的内容。 如果您想发送 完全 通用的内容,可以使用a ,然后在收到内容时使用它来查找内容。 愚蠢的-可

  • 我使用的是Symfony 4.3.8,我找不到任何关于这些弃用的信息: 不推荐用户:创建条令\ORM\Mapping\UnderlineNamengStrategy而不知道其编号已不推荐,将在条令ORM 3.0中删除。 不建议在不知道编号的情况下创建条令\ORM\Mapping\下划线策略,该策略将在条令ORM 3.0中删除。 我在stackTrace中搜索并发现了这个: 在这个类中,构造函数总是

  • 我一直在找,但一直没能找到解决办法。

  • 问题内容: 假设我有一堂课和一堂课。 我知道我可以通过一个拿到B,因为A 有 (或 拥有 )B: 。 但是,如果我有B,我可以得到A吗? 问题答案: 当然,只需在B类中添加例程,然后将构造函数中的行更改为 当然,这假设您的B类具有一个接受的构造函数,例如

  • 问题内容: 我以前使用过这些,但是我想知道它叫什么以及是否有规范吗? 我在HTML 4.01 Spec中 找不到它,导致各种Google结果只将其称为“数组”,以及许多处理表单数据的PHP示例。 问题答案: 在PHP.net的此页面的注释中有一些引用和指针: 托斯滕说 “ XHTML规范的兼容性指南的C.8节适用于将name属性用作片段标识符。如果您检查DTD,则会发现’name’属性仍被定义为表