3

我已经有以下代码

public class Qn3
{
    static BigDecimal[] accbal= new BigDecimal[20];
    private static Integer[] accnums = new Integer[5];

    public static void main(String[] args)
    {
         int count;
         accnums = {1,2} //i cant add this line of code as well, what is wrong?
         while(accnums.length < 5)
         {
              count = accnums.number_of_filled_up_indexes 
               //this is not actual code i know 
           //do this as the number of values in the array are less than 5
           break;
          }
           //do this as number of values in the array are more than 5
    }
}

我必须使用这个代码没有改变这是一个要求,所以请不要建议使用 arraylist 等(我知道其他数组类型和方法)

问题是,正如我已经声明的那样,它accnums必须只包含 5 个值,这是预定义的。

我正在尝试检查是否不为空以及是否全部为空。为此,我已经尝试过,但这给了我 5 p(预定义的整数数组值不是我想要的)。

4

3 回答 3

4
public static void main(String[] args)
{
    int count = 0;
    accnums = new Integer[] {1,2,null,null,null};
    for (int index = 0; index < accnums.length; index++) 
    {
        if(accnums[index] != null)
        {
            count++;
        }
    }

    System.out.println("You have used " + count + " slots);

}
于 2012-08-27T03:05:15.087 回答
2

试试这个...

accnums[0] = new Integer(1);
accnums[1] = new Integer(2);

如果在数组的声明和初始化时间期间完成,以下两项都将起作用。

Integer[] arr = new Integer[]{1,2,3};
Integer[] arr = {1,2,3}

但是当你只是将数组声明为

Integer[] arr = new Integer[3]; // Still array holds no Object Reference Variable

然后以后以这种方式初始化它...

arr = new Integer{1,2,3,};  // At this time it hold the ORV

无论是在类还是方法范围内使用,数组总是被初始化,所以对于一个 int 数组,所有的值都将被设置为默认值 0,而对于Integer它来说,它将是null,作为它的一个Wrapper object

例如:

    Integer[] arr = new Integer[5];

    arr[0] = 1;
    arr[1] = 2;

    System.out.println(arr.length);

    for (Integer i : arr){

        if (i!=null){

            count++;

      }



    }

    System.out.println("Total Index with Non Null Count :"+count);

}

于 2012-08-27T02:58:40.027 回答
0
accnums[0] = 1;
accnums[1] = 2;
final int count = accnums.length
    - Collections.frequency(Arrays.asList(accnums), null);
System.out.println("You have used " + count + " slots");

或者,如果您真的必须手动执行...

int count;
for (final Integer val : accnums) {
  if (val != null) {
    ++count;
  }
}
于 2012-08-27T04:27:59.257 回答