我使用此代码创建了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);
答案 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
的类型(无论是enum
,double
等等。在这种情况下,您将需要该类型的数组:
final TaxBracket[] brackets = new TaxBracket[5];
brackets[0] = new TaxBracket(/* Parameters to construct or particular enum value */);
答案 1 :(得分:0)
这是范围问题,这些数组都不会存在于for循环之外。您需要在for循环之外声明一个数组映射,以使它们保持在范围内并可访问,否则它们将不存在。
答案 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}}