较大数组的最后一个元素索引

时间:2019-05-05 05:44:41

标签: java arrays

char[] someArray = new char[10];
someArray[0] ='a';
someArray[0] ='b';
someArray[0] ='c';

我想在第4个位置添加“ d”。如何获得比数组中最后一个有效元素索引大一的索引? someArray.length-1返回9。我想获得第4位?

编辑: 该代码应为:

char[] someArray = new char[10];
someArray[0] ='a';
someArray[1] ='b';
someArray[2] ='c';

在这种情况下,我知道第4个索引是免费的。如果我有:

void abc(int[] x){
     //I want to add element in the next free index of the array x.
}

4 个答案:

答案 0 :(得分:1)

您可以使用一种方法来找出数组中第一个空位置的索引号:

public static int getFirstEmptyIndex(char[] arr){
    int index=0;
    for(char a:arr){
      if(a==0)
      break;
      else
        index++;
    }
    return index;
  }
public static void main(String[] args) {
    char[] someArray = new char[10];
    someArray[0]='a';
    someArray[1]='b';
    someArray[2]='c';
    someArray[getFirstEmptyIndex(someArray)]='d';    
    System.out.println(someArray[3]);
  }

答案 1 :(得分:0)

首先,但要进行someArray[0] = ..,请将char设置在数组的第一个位置,然后在代码的此位置覆盖此值。

第二,您的问题的答案是通过执行someArray[3] = 'd'。 只要您未达到超出数组大小的索引,数组中的所有元素都是有效的。

答案 2 :(得分:0)

数组索引从0开始。

执行someArray.length-1时,它使用的长度是使用
char[] someArray = new char[10];

初始化的

如果您希望到达数组的第4个位置,请从第0个索引开始计数,您会发现需要在数组中使用索引3,因此您可能要使用
{{1} }

答案 3 :(得分:0)

这是我认为您需要的,类似于@Mohsen的答案,只是我认为这将更易读和直接。

private int nextFree(char[] arr){
        int i = 0;
        for(Character x : arr){
            if(x == 0)
                return i;
            i++;
        }

        return -1;
    }

因此,如果没有可用空间,则得到-1而不是得到0并意外替换索引0值。

  
    

奖金::     如果要按升序将所有可用空间作为数组获得,请查看以下内容:

  
private int[] allFree(char[] ar){
        int s = 0;
        for(char c : ar){
            if(c==0)
                s++;
        }

        int[] k= new int[s];
        s=0;
        int ss=s;

        for(char c : ar){
            if(c==0){
                k[ss] = s;
                ss++;
            }
            s++;
        }

        return k;
    }

顺便说一句,这不是用于此类操作的最佳算法,任何人都可以随意改进它。