Как сделать выражение systemprintln для печати только значений массива без повторения текста - PullRequest
1 голос
/ 18 мая 2019

Как напечатать только значения массива без повторения выделенной части текста

относится к предоставленным решениям, но выглядит сложным, пожалуйста, предоставьте простое решение о том, как печатать только значения

import java.util.Arrays;

public class DuplicateNuminArray {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String progLanguages[] = {"Java", "Python", "C", "C++", "Java", "C"};


        for (int i = 0; i < progLanguages.length; i++) {
            for (int j = i+1; j < progLanguages.length; j++)
            {
                if(progLanguages[i].equals(progLanguages[j]))
                {   
                    System.out.println("The Duplicate string is :" +progLanguages[i]);

                }
            }

        }

    }

Я ожидаю, что состояние печати будет печататься только как показано ниже Дублирующая строка: Java, C
вместо Дублирующая строка: Java Дублирующая строка: C

Ответы [ 2 ]

2 голосов
/ 18 мая 2019

Вам необходимо собрать все дубликаты в структуру данных (и сохранить уникальность). Одной из таких структур данных является тип коллекции Set. Что-то вроде

String progLanguages[] = { "Java", "Python", "C", "C++", "Java", "C" };
Set<String> set = new LinkedHashSet<>();
for (int i = 0; i < progLanguages.length; i++) {
    for (int j = i + 1; j < progLanguages.length; j++) {
        if (progLanguages[i].equals(progLanguages[j])) {
            set.add(progLanguages[i]);
        }
    }
}
System.out.printf("The Duplicate string is: %s%n", set);
0 голосов
/ 18 мая 2019

Мне больше нравится ответ Эллиотта, но альтернативный ответ - использовать print вместо println.Если вы просто переместите один оператор print за пределы цикла for, а затем просто используете print в вашем блоке if вместо println, вы просто добавите в конец все в строке.Вот так:

 String[] progLanguages = {"Java", "Python", "C", "C++", "Java", "C"};

        System.out.print("The Duplicate string is: ");
        for (int i = 0; i < progLanguages.length; i++) {
            for (int j = i+1; j < progLanguages.length; j++)
            {
                if(progLanguages[i].equals(progLanguages[j]))
                {
                    System.out.print(progLanguages[i] + " ");

                }
            }

        }

Или даже заглянуть в StringBuilder

 StringBuilder myBuilder = new StringBuilder("The Duplicate String is: ");
        for (int i = 0; i < progLanguages.length; i++) {
        for (int j = i+1; j < progLanguages.length; j++)
        {
            if(progLanguages[i].equals(progLanguages[j]))
            {
                myBuilder.append(progLanguages[i]);
                myBuilder.append(" ");
            }
        }

    }
        System.out.println(myBuilder.toString());
...