基于标签搜索项目的Java程序

问题描述 投票:-1回答:1

我想制作一个程序,可以根据标签搜索项目。我使用2D数组放置项目及其对应的标签。

            ----------------------------
             Item1 | Tags

               Cat | Pet Cute Mammal
            Burger | Food Snack Mammal
           Chicken | Animal Food Pet
            ----------------------------

下面是我到目前为止的代码:我的问题是,当我基于标签进行搜索时,即使我输入的标签也与其他项目相关,它也只会输出一项。我的目标是输出所有标签等于我输入标签的项目。


        String [][] data={{"Cat","Pet Mammal Cute"},
                          {"Burger","Food Snack Hot"},
                          {"Chicken","Food Bird Pet"},
                          {"Ice Cream","Food Dessert Cold"},
                          {"Laptop","Gadget Device Computer"},
                                    };
        String getInput= searchInput.getText();

        for (String[] data1 : data) {
            String [] container= data1[1].split(" ");
            for(int i=0;i<container.length ;i++)

                if (getInput.equals(container[i])) {
                    result.setText(data1[i]);
            }
        }
java arrays search tags
1个回答
0
投票

您的代码很好。实际上,它所做的一切都很棒。问题是您在哪里设置文本。就在这里:

result.setText(data1[i]);

首先,如果您使用的是i,则会获得数组超出范围的异常。所以它需要像这样:

result.setText(data1[0]);

第二,您一次又一次地设置文本,这意味着您要删除先前的文本。因此,您只会看到最后一场比赛。为了解决这个问题,我将使用StringBuilder将匹配项附加在一起,然后在搜索后设置文本。因此,您的代码变为:

String [][] data={{"Cat","Pet Mammal Cute"},
            {"Burger","Food Snack Hot"},
            {"Chicken","Food Bird Pet"},
            {"Ice Cream","Food Dessert Cold"},
            {"Laptop","Gadget Device Computer"},
};

String getInput= searchInput.getText();;
StringBuilder resultString = new StringBuilder();

for (String[] data1 : data) {
    String [] container = data1[1].split(" ");

    for (String keyword : container)
        if (getInput.equals(keyword)) {
            resultString.append(data1[0]);
            resultString.append(", ");
        }
 }

 result.setText(resultString.toString().substring(0, resultString.length() - 2));

通过resultString.length() - 2结尾只是删除最后一个无用的逗号。

© www.soinside.com 2019 - 2024. All rights reserved.