Генерация HTML списка определений в многомерном массиве Java

Всем привет! В данный момент я решаю следующую задачу: нужно реализовать публичный статический метод buildDefinitionList(), который генерирует HTML список определений (теги <dl>, <dt> и <dd>) и возвращает получившуюся строку. При отсутствии элементов в массиве метод возвращает пустую строку.

Метод принимает на вход список определения в виде двумерного массива:


String[][] definitions = {

  {"definition1", "description1"},

  {"definition2", "description2"},

};

То есть каждый элемент входного массива сам является массивом, содержащим два элемента: термин и его определение.

String[][] definitions = {

  {"Блямба", "Выпуклость, утолщения на поверхности чего-либо"},

  {"Бобр", "Животное из отряда грызунов"},

};

 HtmlBuilder.buildDefinitionList(definitions);

// "<dl><dt>Блямба</dt><dd>Выпуклость, утолщение на поверхности чего-либо</dd><dt>Бобр</dt><dd>Животное из отряда грызунов</dd></dl>";

Мой код:


package com.arrays.problem6;

public class HtmlBuilder {

    public static void main(String[] args) {
            }

    public static String buildDefinitionList(String[][] definitions){
        var result = new StringBuilder();
        result.append("<dl><dt>");
        
        for (var item : definitions) {
            // append дополняет строку
            result.append("<dd>");
            //  result.append("<dd>");
            result.append(item);
            result.append("</dl></dd>");
        }
        result.append("</dl></dd>");

        // toString собирает все части в одну строку
        System.out.println(result);
        return result.toString();

    }

}

Программа работает в правильном направлении,но нужен вывод типа <dl><dt>key</dt><dd>value</dd><dt>key2</dt><dd>value2</dd></dl>, а у меня получается <dl><dt><dd>[Ljava.lang.String;@59ad9541</dl></dd><dd>[Ljava.lang.String;@42d1de3c</dl></dd></dd></dl>. Помогите найти мне ошибку, пожалуйста


Ответы (1 шт):

Автор решения: Pete Alexandrovich

Все-таки пришлось разобраться самостоятельно.Вложенные циклы мне не потребовались.Все дело в создании двух дополнительных строковых переменных,которые записываются в двумерный массив.Ну и еще потребовалась та самая проверка на отсутствие элементов в массиве.

public class HtmlBuilder {

  public static void main(String[] args){
   }
   
    public static String buildDefinitionList(String[][] definitions){
        if(definitions.length==0){
            return "";
        }
        
        StringBuilder result = new StringBuilder();
        result.append("<dl>");
        for(String[] definition : definitions){
            String name=definition[0];
            String description=definition[1];

            result.append("<dt>");
            result.append(name);
            result.append("</dt>");

            result.append("<dd>");
            result.append(description);
            result.append("</dd>");
        }
        result.append("</dl>");
        
        return result.toString();
    }
}

→ Ссылка