[英]Parsing a JSON Array into a Java array returns the last element as the second index
[英]Last element index of an array with larger size
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開始。
當您執行someArray.length-1
,它將使用使用初始化時的長度
char[] someArray = new char[10];
如果希望到達數組的第4個位置,請從第0個索引開始計數,您會發現需要在數組中使用索引3,因此您可能需要使用
someArray[3] = desired_value
您可以使用一種方法來找出數組中第一個空位置的索引號:
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]);
}
首先,但要做someArray[0] = ..
,請將char設置在數組的第一個位置,然后在代碼中的此位置覆蓋此值。
其次,您的問題的答案是通過執行someArray[3] = 'd'
。 只要您未達到超出數組大小的索引,數組中的所有元素都是有效的。
這是我認為您需要的,類似於@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;
}
順便說一下,這不是用於此類操作的最佳算法,任何人都可以隨意改進它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.