【问题标题】:Problem with java array. making it a certain size and let the user input data to the arrayjava数组的问题。使其具有一定的大小并让用户将数据输入到数组中
【发布时间】:2018-10-13 22:12:42
【问题描述】:

我有一个学校作业,但我被困住了,可以使用一些技巧。

任务是我需要制作一个数组,并让用户使用扫描仪和循环将数据放入数组中。如果用户在扫描仪中放入一个空字符串,扫描仪应该停止并打印出数组。数组的长度也不能超过 25。

public class invoerOpslaan {
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String[] arrayList = new String[25];
    String input;
    int i = 0;

    for (input = scanner.nextLine(); !input.isEmpty(); input = scanner.nextLine()) {
        arrayList[i] = input;
        i++;
    }
    System.out.println(arrayList[]);
}

我的数组长度设置为 25,但我怎样才能让用户在数组中放入 15 个字符串,数组将是 15 而不是 25。如果用户将第 25 个字符串放入数组它会自动停止扫描仪并打印出数组。

【问题讨论】:

  • 你可以使用ArrayList吗?
  • 在允许的情况下使用List,否则初始化String[25],然后使用Arrays.copyOf 方法。
  • 另外,你应该遵循 Java 命名约定:类名总是以大写开头。
  • 将中间的 for 循环部分更改为 !input.isEmpty() && i
  • 我很乐意使用任何东西,只要我得到结果。并感谢@MCEmperor 的提示将立即更改它。还将查找更多的 java 命名约定。对此仍然很陌生:)

标签: java arrays user-input


【解决方案1】:

如果不允许使用List,则循环遍历数组中包含值的每个元素,并使用所有这些元素创建一个新数组(大小为i)。

    Scanner scanner = new Scanner(System.in);
    String[] arrayList = new String[25];
    String input;
    int i = 0;

    for (input = scanner.nextLine(); (!input.isEmpty() && i < 25); input = scanner.nextLine()) {
        arrayList[i] = input;
        i++;
    }

    String[] newArrayList = new String[i];

    int index = 0;
    for (String element : arrayList) {
        if (element == null)
            continue;
        newArrayList[index] = element;
        index++;
    }

【讨论】:

  • 什么是 (String element : arrayList) 你到底在这里检查什么?因为我不明白 --> :
  • 抱歉回复晚了! : 符号代表 infor 语句循环遍历列表中的每个元素。
  • 啊。是的,我总是使用 for 循环并通过数组进行交互,但这更容易。感谢您的回复!即使有点晚了:)
【解决方案2】:

您可以使用ArrayList 为您的代码提供一个动态大小的数组。

Scanner scanner = new Scanner(System.in);
ArrayList<String> arrayList = new ArrayList<>();
String input;
int i = 0;
for (input = scanner.nextLine(); !input.isEmpty(); input = scanner.nextLine()) {
    arrayList.add(input);
    i++;
}
System.out.println(arrayList);

System.out.println 会给你这样的输出:

[Hello, World!]

【讨论】:

    【解决方案3】:

    如果您不能使用List,您可以使用Arrays.copyOf()i 将用户输入的元素复制到新的Array。此外,您实际上并没有检查以确保 i 小于 25。请确保检查循环:

    for (input = scanner.nextLine(); !input.isEmpty() && i < 25; input = scanner.nextLine()) {
        arrayList[i] = input;
        i++;
    }
    String[] temp = Arrays.copyOf(arrayList, i);
    System.out.println(Arrays.toString(temp));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 2022-01-04
      • 2016-02-10
      • 1970-01-01
      • 2011-03-20
      相关资源
      最近更新 更多