【问题标题】:Refer To Arrays Dynamically Java参考动态数组 Java
【发布时间】:2015-06-01 14:23:33
【问题描述】:

我的 Java 程序中有一系列数组

Integer[] row1 = {0,0,0,0,0,0};
Integer[] row2 = {0,0,0,0,0,0};
Integer[] row3 = {0,0,0,0,0,0};
Integer[] row4 = {0,0,0,0,0,0};
Integer[] row5 = {0,0,0,0,0,0};
Integer[] row6 = {0,0,0,0,0,0};

我还有一个1-6之间随机生成的数字:

    int selectrow = rand.nextInt(6)+1;

我需要根据生成的数字的值来引用这些行中的每一行。所以像 "row" + selectrow 这样的东西,然后对它做一些事情,但我不确定如何在没有 if 语句的情况下实现这一点。如果语句会变得太混乱。有什么想法吗?

【问题讨论】:

  • 你可以,但你真的不应该。构建一个数组数组,或者其他结构,不要尝试通过名称访问变量。
  • @DenysSéguret 我们如何在运行时使用变量名访问变量?使用反射?
  • 好吧 Denys,我相信你,我会制作数组数组 :)
  • 好。请也使用循环来填充您的矩阵;)如果您没有理由使用对象,请使用 int,而不是 Integer

标签: java arrays refer


【解决方案1】:

构建一个数组数组。

并且使用int,而不是Integer,除非您有非常具体的原因需要使用昂贵的对象。

并使用循环来填充您的矩阵。除非你用0 填充它并使用int,因为它是默认值。

合而为一,您的代码可能是这样的:

    int[][] matrix = new int[6][6];
    Random rand = new Random();
    // there's probably something happening here
    int[] selectedRow = matrix[rand.nextInt(6)];

【讨论】:

    【解决方案2】:

    您应该使用数组数组:

    Integer[][] rows = createRows();
    int selectrow = rand.nextInt(6);
    Integer[] = rows[selectrow];
    

    请注意,我在变量selectrow 的初始化中删除了+1 部分。 Java 中的数组具有从 0 开始的索引。

    【讨论】:

      【解决方案3】:

      与其对每一行使用单独的变量,不如使用two-dimensional array 来代替。那么选择一个新行是微不足道的:

      Integer[] row = rows[rand.nextInt(6)];
      

      (请注意,索引从 0 开始,而不是 1。)

      【讨论】:

        【解决方案4】:

        将它们添加到数组数组中:

        Integer[][] arrays = { row1, row2, row3, row4, row5, row6 };
        Integer[] row = arrays[selectRow];
        

        【讨论】:

          猜你喜欢
          • 2021-04-30
          • 1970-01-01
          • 1970-01-01
          • 2019-01-01
          • 2013-09-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-13
          相关资源
          最近更新 更多