Премини към съдържанието

Препоръчан отговор


Даден ви е масива int[] array. Създайте нов масив, с елементите от първия, но без числото 6. Пример: int[] array = {2,4,5,6,8,6,3,4,6} → array2: {2,4,5,8,3,4};

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

package arraynosix;

/**
 *
 * @author krasio
 */
public class ArrayNoSix 
{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
        int[] a = {2,4,5,6,8,6,3,4,6};
        int[] b;
        int size = a.length;
        for (int i = 0; i < a.length; i++)
        {
            if (a[i] != 6) continue;
            size--;
        }
        b = new int[size];
        int j = 0;
        for (int i = 0; i < a.length; i++)
        {
            if (a[i] == 6) continue;
            b[j] = a[i];
            j++;
        }
        for (int i = 0; i < size; i++)
        {
            System.out.print(b[i] + " ");
        }
    }
    
}

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Привет !

Прилагам две решения - първото е наивния подход, подобен на вече предложения от @Реджеп Иведик с малко по-малко редове (но със сходна сложност).

Втория е един начин с използването на Stream API-то на Java, което се предлага в Java 1.8:

import java.util.Arrays;

public class ArraysNoSix {
	
	public static void main(String[] args) {
		
		naiveApproach(new int[] {1,6,4,5,6,7,6,8});
		naiveApproach(new int[] {1,2,3,4});
		naiveApproach(new int[] {6,6,6,6});
		naiveApproach(new int[] {});
		
		oneLine(new int[] {1,6,4,5,6,7,6,8});
		oneLine(new int[] {1,2,3,4});
		oneLine(new int[] {6,6,6,6});
		oneLine(new int[] {});
		
	}
	
	public static void naiveApproach(int[] array) {
		int currentPoss = 0;
		int[] filtered = new int[array.length];
		for (int elem: array) {
			if (elem != 6) {
				filtered[currentPoss] = elem;
				currentPoss++;
			}
		}
		int[] result = new int[currentPoss];
		System.arraycopy(filtered, 0, result, 0, currentPoss);
		System.out.println(Arrays.toString(result));
		
	}
	
	public static void oneLine(int[] array) { // Java 1.8 !!!
		int[] result = Arrays.stream(array).filter(elem -> elem != 6).toArray();
		System.out.println(Arrays.toString(result));
	}

}

Относно решението на @Реджеп Иведик, публикувано по-горе, имам само една препоръка - чисто професионално ориентирана:

Не се препоръчва използването на "continue" оператора, ако логиката може да се преправи във формат,  който го избягва - т.е. вместо 

if (a[i] != 6) continue;
   size--;

да се използва

if (a[i] != 6) size++;

и size да се инициализира с 0-ла.

Поздрави !

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.