从2D数组中收集数字

时间:2018-01-18 10:21:17

标签: java arrays multidimensional-array

我想要一个名为collectNums的方法,该方法应该从2D对象数组中收集类型Number的所有元素。然后我想在Number中收集List类型的所有元素并将其返回。

这是我的代码:

public static List<Number> collectNums(Object nrAry[][])
{
    List<Number> numbers = new ArrayList<Number>();
    for(int i = 0; i < nrAry.length; i++) 
    {
        for(int j = 0; j < nrAry[i].length; j++)
        {
            if (nrAry[i][j] instanceof Number) 
            {
                numbers.add(j);
                numbers.add(i);
            }
        }
    }
    return numbers;
}

如果我没有说清楚,请告诉我。谢谢大家!

2 个答案:

答案 0 :(得分:3)

您正在收集数组的索引,而不是存储在数组中的值。

public static List<Number> collectNums(Object nrAry[][])
{
   List<Number> numbers = new ArrayList<Number>();
   for(int i=0;i < nrAry.length; i++)  {
       for(int j=0;j < nrAry[i].length; j++) {
            if (nrAry[i][j] instanceof Number)  {
                numbers.add((Number)nrAry[i][j]);
            }
        }
    }
    return numbers;
}

答案 1 :(得分:0)

在Java 8中,它可以更简单:

public static String toRomanNumeral(int i) {
    return ",M,MM,MMM".split(",")[i/1000]
         + ",C,CC,CCC,CD,D,DC,DCC,DCCC,CM".split(",")[i%1000/100]
         + ",X,XX,XXX,XL,L,LX,LXX,LXXX,XC".split(",")[i%100/10]
         + ",I,II,III,IV,V,VI,VII,VIII,IX".split(",")[i%10];
}