【问题标题】:How I can index the array starting from 1 instead of zero?如何从 1 而不是 0 开始索引数组?
【发布时间】:2013-08-28 09:46:16
【问题描述】:
for (int i = 0; i < reports.length; i++) {

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

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

  }
}

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

【问题讨论】:

  • java中的索引只从零开始,
  • 发明你自己的编程语言:)
  • not working as expected - 你的预期是什么?它有何不同?
  • 为什么要从1开始?
  • 有许多旧的编程语言曾经以 1 开头,或者他可能阅读了一本算法书,其中假设起始索引为 1。

标签: java


【解决方案1】:

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

定义在JLS §10.4,如果你感兴趣的话。

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

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

【讨论】:

    【解决方案2】:

    你不能这样做,因为 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]);
    }
    

    【讨论】:

      【解决方案3】:

      就像在大多数语言中,数组从 0 开始索引。你最好习惯它,没有解决方法。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          例如:

          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.
          

          这不适用于每个编译器。这是可以为您的问题做的最接近的事情。

          【讨论】:

          • 我在您在另一个问题上提供的链接/参考之后发现了这一点。为此,我建议对其进行编辑以使其更加自信。 “我猜这在每个编译器中都不起作用。”无助于给人一种经过充分研究、自信、便携和可靠的解决方案的印象。
          • 实际上,如果您看起来不同,那么在您的解决方案中说明漏洞/问题是您生活中唯一的可靠性。在工程学中,一切都是通过查看其缺陷而不是其完美来改进的。所以我事先声明,这种技术并不适用于所有编译器,是因祸得福。
          • 指出假设,实际上也意识到它们,并承认缺点是工程师难得的天赋。我不相信那些总是正确的人,或者这样认为的人。所以我在这方面完全支持你。
          • 所以你吵架是为了让我失望?
          • 我无法解析您的评论的措辞。
          【解决方案6】:

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

          【讨论】:

          • 这基本上就是公认的答案所说的:“您可以从另一个索引填充或使用它,但不能更改基本索引。”
          • yaa 两者的意思都是一样的......因为我的回答主要是针对新手的......所以让他们清楚地理解。
          猜你喜欢
          • 2023-03-30
          • 2020-09-18
          • 2013-12-15
          • 1970-01-01
          • 2021-05-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多