在for循环中创建的各个数组的名称

时间:2017-08-19 23:16:34

标签: java arrays for-loop

我使用此代码创建了5个数组:

for (int i=1; i<6; i++){
  Array[] taxBracket = new Array[4];
  System.out.println(Arrays.toString(taxBracket));
}

它给了我以下输出:

[null, null, null, null]
[null, null, null, null] 
[null, null, null, null] 
[null, null, null, null] 
[null, null, null, null]

哪个好,但我怎么能单独处理任何一个阵列? 对于让我们说第一个数组调用toString()方法。 我想做这样的事情:

System.out.println(Arrays.toString(taxBracket1);

System.out.println(Arrays.toString(taxBracket2);

4 个答案:

答案 0 :(得分:0)

通常你会创建一个你想要作用的类型的数组。

例如;如果您使用BigDecimal数组来表示单个taxBracket,那么您可以将其声明为:

final BigDecimal[][] taxBrackets = new BigDecimal[5][2];
taxBrackets[0][0] = new BigDecimal("0");
taxBrackets[0][1] = new BigDecimal("12500");

taxBrackets[1][0] = new BigDecimal("12500.01");
// ... etc.

直接使用类型Array可能不是您想要做的。

  

我希望它是一个单维数组。

然后假设您有一些代表单数TaxBracket的类型(无论是enumdouble等等。在这种情况下,您将需要该类型的数组:

final TaxBracket[] brackets = new TaxBracket[5];
brackets[0] = new TaxBracket(/* Parameters to construct or particular enum value */);

答案 1 :(得分:0)

这是范围问题,这些数组都不会存在于for循环之外。您需要在for循环之外声明一个数组映射,以使它们保持在范围内并可访问,否则它们将不存在。

http://www.geeksforgeeks.org/variable-scope-in-java/

答案 2 :(得分:0)

您可以通过索引访问数组的内容。至于你的代码,将taxBracket从循环中取出,因为它将在每次迭代时重新初始化,并且它不会存在于循环之外。您可以为您的问题创建二维数组。但是,我强烈建议您使用HashMap。

对于2D阵列实现,您可以做的是:

int [][] taxBracket = new int[5][4]

然后您可以通过以下方式访问其内容:

for(int i = 0 ; i < taxBracket.length; i++)
{
    for(int j = 0 ; j < taxBracket[i].length; j++) 
    {
        System.out.print(taxBracket[i][j]+" ");
    }
    System.out.println();

}

如果您希望通过名称访问,请使用HashMap或Map。如果您愿意,我可以为您提供地图的示例代码。

答案 3 :(得分:0)

变量taxBracket是对数组的引用,因此仅引用循环中创建的最后一个数组。其他数组丢失,将被Java垃圾回收丢弃。另请注意,由于final int BRACKET1 = 0, BRACKET2 = 1, BRACKET3 = 2; // name the brackets here final int ROWS = 5; final int COLS = 10; int[][] taxArray = new int[ROWS][COLS]; // this is your array // now you can print the way you wanted System.out.println(Arrays.toString(taxArray[BRACKET2])); 在循环范围内声明,因此在循环结束后将不存在。

正如@Andrew Li建议我会使用2D数组。如果要使用第一个维度的名称,可以使用常量:

{{1}}