2016-02-16 2 views
-1

Я хочу вставить целое число в массив в правильном положении.Вставить целое число в массив java

Например, мой массив равен (1,2,3,4,6), а мое целое число равно 5.
Новый массив должен быть (1,2,3,4,5,6)

Мой код до сих пор:

public static void main(String[] args) { 

    int a = 5; 
    int [] aray = { 1,2,3,4,6}; 
    int[] newArray = new int[array.length + 1]; 

    for(int i = 0; i < newArray.length -1 ; i++) { 

     if(array[i] < a && array[i+1] > a) { 
      newArray[i] = a; 
     }    
     newArray[i] = array[i];         
    }      

} 

ответ

0

Вы можете осуществить это с помощью двух петель. Один для повторения копирования из оригинала в новый, пока вы не добавите a в newArray, затем второй цикл, чтобы скопировать все, оставшееся от исходного массива (в newArray). Наконец, вам понадобится последний if, чтобы убедиться, что ваш элемент не должен быть добавлен в конец. Что-то вроде,

int i = 0, p = 0; 
while (p < newArray.length && i < array.length) { 
    if (array[i] < a) { 
     newArray[p++] = array[i++]; 
    } else { 
     newArray[p++] = a; 
     break; // <-- added a, break and add the rest of the original array 
    } 
} 
while (p < newArray.length && i < array.length) { 
    newArray[p++] = array[i++]; 
} 
if (p < newArray.length) { 
    newArray[p] = a; 
} 
System.out.println(Arrays.toString(newArray)); 
1

Ниже код работает как ожидалось.

int a = 4; 
int[] array = { 1, 3, 5, 7, 9 }; 
int[] newArray = new int[array.length + 1]; 
for (int i = 0, j = 0; i < array.length; i++, j++) { 
    if (i == 0 && array[0] > a){ 
     j++; 
     newArray[j] = a; 
    } 
    newArray[j] = array[i]; 
    if((i == array.length - 1 && array[i]<a) 
      || (array[i] < a && array[i + 1] > a)) { 
     j++; 
     newArray[j] = a; 
    } 

} 
System.out.println(Arrays.toString(newArray)); 
0

Вы можете попробовать это: Вы можете использовать System.arraycopy() вместо for цикла.

int a = 5; 
int [] array = { 1,2,3,4,6}; 
int[] newArray = new int[array.length + 1]; 
// 1. copy the array 
System.arraycopy(array, 0, newArray, 0, array.length); 
// 2. insert the value to the last position. 
newArray[newArray.length-1] = a; 
// 3. then sort the array 
Arrays.sort(newArray); 

// or you can swap the position for this 
/*int temp = newArray[4]; 
newArray[4] = a; 
newArray[5] = temp;*/ 

// 4. and it is what you want 
System.out.println("newArray = " + Arrays.toString(newArray)); 

И это результат:

newArray = [1, 2, 3, 4, 5, 6] 
0
for (int i = 0; i < newArray.length - 1; i++) { 
    if (array[i] < a && array[i + 1] > a) { 
     int t = array[i + 1]; 
     newArray[i + 1] = a; 
     newArray[i + 2] = t; 
     newArray[i] = array[i]; 
     break;//use break 
    } 
    newArray[i] = array[i]; 
} 
0

Пожалуйста, проверьте код ниже

int a = 5; 
int [] aray = { 1,2,3,4,6}; 
int[] newArray = new int[aray.length + 1]; 
for(int i=0, j=0; i<aray.length; i++, j++) { 
     if((aray[i] > a) && (j == i)) { 
      newArray[j] = a; 
      j++; 
     } 
     newArray[j] = aray[i]; 
} 
if(j == i) { 
    newArray[j] = a; 
} 
-1
class test{ 
public static void main(String args[]){ 
     int arr[] ={1,2,3,4,5}; 
     int new_array[] =new int[arr.length+1]; 
     int e = 9; 
     int p = 3; 
     for(int i=0;i<=arr.length-1;i++){ 
       if(i==p){ 
         new_array[i] = e; 
         continue; 
        } 
       new_array[i]=arr[i]; 
      } 
    } 

}