gpt4 book ai didi

java - 在java中按需创建数组

转载 作者:行者123 更新时间:2023-12-01 12:58:57 27 4
gpt4 key购买 nike

我认为自己是一名中级 Java 程序员,已经从事了一年半的工作,并且在其他语言方面拥有一些经验。然而,我遇到了一个问题,我觉得我需要专家的帮助。

据我了解,由 java 创建的数组存在于创建它们的位置之外,即,如果您在一个类中创建一个名为 s 的数组,在第二个类中创建另一个名为 s 的数组,那么尝试将这两个类用作程序中你会遇到它们相互覆盖的问题。

然而,这让我陷入了一个有趣的困境。如果想要为无限多组用户输入按需创建一个唯一的数组该怎么办?即,是否可以让用户输入一个字符串值用作数组名称,或者有一个通用值,然后在其后面附加一个数字或字母。这更多的是一个理论问题(还有其他方法可以完成同样的事情),但任何见解将不胜感激。

最佳答案

i.e. is it possible to have the user enter a string value for use as the array name or have a generic value that then gets a number or letter appended to it.

用户不需要关心您的数组名称。数组的名称既不应该对用户可见,也不应该以任何方式影响您的应用程序。

如果您希望允许用户创建可以存储在 FriendlyName 下的元素集合,您可以使用(哈希)映射:

Map<String, Integer[]> userDefinedArrays = new HashMap<>();

userDefinedArrays.put("NameTheUserSelectsForThisArray", new Integer[]{1,2,3});

此 map 的“Key”将是用户提供的 FriendlyName - 他仍然不知道实际的 map 名为 userDefinedArrays - 甚至 someMapThatHoldsSomeThingsTheUserWantToUse。

实际变量的名称需要在设计时设置并且是固定的(至少在java中)

if you create an array called s in one class and another called s in a second class then try to use both those classes as part of a program you will run into problems with them overwriting each other.

不!声明的每个变量都存在于它自己的范围内!您可以在数组的作用域内更改数组的值,也可以在不同的作用域内重用相同的名称 - 这并不重要。如果您尝试重新声明当前作用域内已存在的变量,编译器会警告您! - 简单的你做不到。

示例:

class MyApplication{
public static void Main(String[] args){
Integer[] arr1;
Integer[] arr1; //Compiler error!
}
}

但是:

class MyApplication{
public static void Main(String[] args){
Integer[] arr1;
Integer[] arr2;
}
}

class MyApplication{
public static void Main(String[] args){
foo();
bar();
}

public static void foo(){
Integer[] arr1;
}

public static void bar(){
Integer[] arr1;
}
}

没问题。 arr1 仅存在于 foo()bar() 的范围内。

关于java - 在java中按需创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23663138/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com