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.
}
答案 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;
}
顺便说一句,这不是用于此类操作的最佳算法,任何人都可以随意改进它。