Помощ за задача Remove Duplicates за JAVA

Здравейте на всички. Имам проблем със задачата Remove Duplicates и не успявам да я реша. Някой който я е решил на JAVA ще сподели ли с мен решението си за да го проуча и да видя къде бъркам.

Мога да ти дам решението ми на JS, но според мен няма да ти помогне по никакъв начин. Може да разгледаш следния линк:

for(String element:oldList) {
if(!newList.contains(element)) {
newList.add(element);
}
}

Хей, и аз се чудя защо моя не работи , поствам кода тук, ако някой случайно има идея дали с само с for & if може да стане:

import java.util.Scanner;

public class RemoveDuplicates {
public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    String inputline = input.nextLine();
    String [] elements = inputline.split(",");
    String removeduplicates = "";

  for (int i=0 ; i < elements.length; i++){

        if (i==0 && elements[i]!=elements[i+1]){
            removeduplicates += elements[i]+ ",";
        }

        else if ( i!=elements.length - 1 && !elements[i].equals(elements[i+1]) && !elements[i].equals(elements[i-1])) {

            removeduplicates += elements[i] + ",";

        }
        else if (i == elements.length - 1 && !elements[i].equals(elements[i-1]));
        removeduplicates += elements[i];
    }
    System.out.println(removeduplicates);    
}
}

@rositcayancheva
Този equals не му е мястото в тази задача. Аз лично бих направил два масива. Първия ще е с input стойностите, а втория ще е празен и ще се пълни. Ще завъртя един цикъл върху първия масив, в който ще завъртя още един цикъл, който проверява дали елемента от първия масив го има във втория и ако го няма, ще го вкарвам.
Иначе твоята грешка е, че не знаеш как се използва equals, прочети материала за equals който съм споделил горе. Препоръчвам ти да хвърлиш едно око и на това.

1 Like

Благодаря на всички за идеите и предложенията и желанието да помагате на другите!

1 Like

Благодаря! Всъщност прибягнах до това странно и неработещо решение, понеже не знаех как да определя дължината на втория масив. Накрая използвах List и се получи :woman_mechanic:

Здравейте,

И аз изпитвам затруднения с тази задачка. Гърми ми кода когато цикъла стигне до посления елемент от масива, но не съм сигурна как да подходя.
Ще се радвам ,ако някой даде съвет :slight_smile:

Благодаря предварително!

Здравей,

Пробвай на 26-ти ред да спреш цикъла до arryLine.length-1 понеже на 28-ми ред искаш да достъпи i+1 елемент и ти дава ArrayIndexOutOfBounds Exception, т.е. опитваш се да достъпиш елемент извън рамките на масива.

Надявам се, това да оправи решението :slight_smile:

След поправката на кода на колегата ми дава 60 т.
for (int i = 0; i < input.length - 1; i++)
вместо:
for (int i = 0; i < input.length ; i++)
?

Няма нужда от length-1. Някой по-горе по принцип ти реши задачата.
Правиш си 1 array , който пълниш със зададените стойности. Ползвай String.
След това правиш 1 лист , и loop-ваш array-а , като проверяваш всяка стойност дали се съдържа в array-а и само ако не се съдържа , само тогава да се добавя.