我有兩個這樣的數組。我想合併這兩個數組使用索引值的組合。在java中動態數組合並
我的輸入將是兩個整數值(2:3比率),這樣
int firstArray = 2; //input value
int secondArray = 4; //input value
合併畢竟值將被存儲在單個列表。現在我需要這樣的輸出。
1
2
111
222
333
444
3
1
555
666
777
888
2
3
999
111
222
333
循環應該運行,直到哪個數組長度很大並且從這兩個數組中檢索所有值。
如果數組長度得到了改變,則輸出比也應改變
String[] arr1 = { "1", "2", "3", "4", "5", "6", "7", "8" };
String[] arr2 = { "111", "222", "333", "444", "555" };
int firstArray = 3; //input value
int secondArray = 2; //input value
輸出:
1
2
3
111
222
4
5
6
333
444
7
8
1
555
111
所以條件輸出應包含來自兩個陣列和直到陣列輸出的最大長度的所有值應完成第二個比例(第二個輸入值 - secondArray)。
在此先感謝。
String[] arr = mergeArrays(arr1, arr2, 2, 3);
System.out.println("Ratio 2:3");
for (String str : arr) {
System.out.println(str);
}
private static String[] mergeArrays(String[] arr1, String[] arr2, int firstArray, int secondArray) {
final String[] ret = new String[arr1.length + arr2.length];
for (int j = 0, k = 0; j < arr1.length || k < arr2.length;) {
if (j < arr1.length) {
do {
ret[j + k] = arr1[j];
j++;
} while (j < arr1.length && (j % firstArray != 0 || k == arr2.length));
}
if (k < arr2.length) {
do {
ret[j + k] = arr2[k];
k++;
} while (k < arr2.length && (k % secondArray != 0 || j == arr1.length));
}
}
return ret;
}
我從這個solution
試過,但我不能能帶來正確的出放
嗨Niels,感謝您的支持。您的輸出幾乎是正確的,但一個邏輯缺少輸出將以秒比(sencondArray)結束。 – Raj
嗨尼爾,刪除後**如果(index2
Raj