【问题标题】:Using a parameter to instantiate a variable in Java在 Java 中使用参数实例化变量
【发布时间】:2015-12-04 03:13:42
【问题描述】:

我是一名初级程序员,即将结束我的第一个学期和我的第一门 Java 课程。在练习数组时,我试图实现一种创建数组的方法。

public static void genArray1(String arrayID, int cols)
{

    int arrayID[] = new int[cols];
    for(int i=0;i<cols;i++)
    {

    }
}

我暂时将循环留空,因为我在实际创建数组/输入值方面没有问题,但我不确定如何使用作为参数输入的标识符来创建数组。我明白了

"变量 arrayID 已经在方法 genArray1(String,int) 中定义 int arrayID[] = new int[cols];"

当我尝试编译这段代码时。

【问题讨论】:

  • ..... 完全不言自明... 更改参数名称String arrayID 或更改int arrayID[] 的名称
  • 为该方法传递的参数被视为该方法的局部变量,因此您在这里定义了两个具有相同名称的局部变量。这就是为什么存在编译错误的原因。
  • 是的,我知道冲突在哪里,抱歉,如果我的问题不清楚,我正在尝试弄清楚如何使用创建变量/对象(在本例中为数组)用户提供的 ID
  • @JoeBlake,为什么要使用用户提供的 ID 来命名变量?这将是XY problem 的情况。如果您可以发布您正在尝试解决的实际问题,您可能会得到令人满意的答案。

标签: java arrays parameters instantiation


【解决方案1】:

你已经命名了一个字符串arrayID,所以你不能用同样的名字命名另一个变量。您需要更改参数名称arrayID 或更改整数数组名称arrayID

【讨论】:

  • 是的,我知道冲突在哪里,抱歉,如果我没有清楚地解释我的意图/问题。我试图用用户选择的 ID 创建一个对象。
【解决方案2】:

如果您尝试根据参数定义变量的名称,那么在 Java 中没有简单的方法可以做到这一点,如果您想这样做,最好的办法是查看反射 API。

您可以在这里了解反射:https://docs.oracle.com/javase/tutorial/reflect/

虽然最好解释一下您要做什么,因为对于大多数(如果不是几乎所有)情况,这样做没有真正的目的。

【讨论】:

  • 我的意图是能够提示用户输入变量的名称,我将检查该 API,但我认为此时它有点超出我的范围。我想让用户创建数组对象的实际 ID 真的没有意义,所以我想我应该创建一个类,其对象将包含数组和该数组的名称/ID?
猜你喜欢
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
  • 2013-08-14
相关资源
最近更新 更多