我如何从1开始而不是从零开始索引数组?

时间:2013-08-28 09:46:17

标签: java

for (int i = 0; i < reports.length; i++) {

  Products[] products = reports[i].getDecisions;

  for (int j = 0; j < products.length; j++) {

  }
}

这里我想从1开始索引内部for循环,但它没有按预期工作,我也改变了j

6 个答案:

答案 0 :(得分:13)

Java数组总是从0开始。你无法改变这种行为。您可以从其他索引填充或使用它,但不能更改基本索引。

如果您对此感兴趣,请在JLS §10.4中定义。

  

数组的一个组件由一个数组访问表达式(第15.13节)访问,该表达式由一个表达式组成,该表达式的值是一个数组引用,后跟一个由[和]括起来的索引表达式,如A [i]。

     

所有数组都是0原点。长度为n的数组可以用整数0到n-1索引。

答案 1 :(得分:4)

你不能这样做,因为Java中的数组索引从0开始。 但您可以通过少量修改访问索引为1的数组。

实施例: 考虑一个长度为n

的整数数组“a”
for(int i=0;i<n;i++) {
    System.out.println(a[i]);
}

可以修改为:

int a[] = new int[n+1];
for(int i=1;i<n+1;i++) {
    System.out.println(a[i]);
}

答案 2 :(得分:1)

就像在大多数语言中一样,数组的编号为0.你最好习惯它,没有解决方法。

答案 3 :(得分:1)

Java数组的基本索引始终 0 。它不能改为1.

答案 4 :(得分:0)

您可以使用指针跳到数组的某个点,然后从那里开始数组。

例如:

char str[20];
str={'H', 'E' ,'L' ,'L', 'O','W' ,'O ','R','L',' D'};
char *ptr;
*ptr=str[0];
//right now its pointing to the starting.
ptr=ptr+3;
//Now pointing at 3rd unit.

这并非在所有编译器中都有效。这是可以解决您问题的最接近的方法。

答案 5 :(得分:0)

很简单,在 C、C++、Java 等中。数组索引仅从“0”开始。我们无法改变它。但有时在一些练习题中,我们被要求使用基于 1-indexed 的数组,我们实际上不能这样做,所以要解决这个问题,只需将第 0-index 放在一边,并从第 1-index 开始使用数组,在解决这种情况时,请始终记住,我们绝不能在我们的操作中包含或使用第 0 个索引。