【问题标题】:How to get all required strings in a string array before a break如何在中断前获取字符串数组中的所有必需字符串
【发布时间】:2018-02-26 09:50:23
【问题描述】:

我们的任务是制作一个接受用户输入的程序。用户可以使用两种类型的输入,第一种是“输入尺寸”,第二种是“输入样式”,用户可以在第一个字段或第二个字段中输入。当用户点击确定时,这两个输入将用于排序一个数组列表,其中包含大小和样式的类型。

public void viewResult(String style, String size) {
    style = style.toLowerCase();
    size = size.toLowerCase();
    new_list = new ArrayList<>();

        for(Items_container items:current_arrayList)
        {
                if (items.getStyle().toLowerCase().contains(style) && items.getSize().toLowerCase().contains(size)) 
                {
                        new_list.add(items);
                        break;

                }
                else if (items.getSize().toLowerCase().contains(size)) {
                        new_list.add(items);
                        break;

                }

                else if (items.getStyle().toLowerCase().contains(style)) {
                       new_list.add(items);
                       break;
            }
        }

    current_arraylist.clear();
    adapter.filterSearch(new_list);
    if (new_list.size() == 0) {
        results.setText("Search not found");
    } else {
        results.setText("Results");
    }
}

这是我用来整理 Items_container 的方法,现在它确实可以正常工作(我猜)

但问题是,例如,用户在尺寸输入字段中输入“大”,在样式输入字段中输入“耀眼”,程序必须使用给定的输入对 items_container 进行排序,但它不起作用,因为程序还包括所有具有相同尺寸或​​相同样式的项目。

我尝试在循环中添加一个中断,但现在它只显示一个数据,如果有两个或更多数据与给定输入匹配,我该怎么做?

【问题讨论】:

  • 为什么你没有一个 OR 块而不是上面的 3 个条件?
  • 那么我将如何区分条件呢?
  • 只有第一个条件但是放||而不是 &&。
  • 哦,好吧,我想效率更高

标签: java android arrays loops


【解决方案1】:

您应该首先检查是否设置了这两个条件。这样,如果其中一个匹配并且两者都匹配,您就可以分开。如果没有项目同时满足这两个条件,可能会将单数匹配项放在单独的列表中,但这取决于您。

正如其他人已经说过的,break 停止循环,继续移动到下一个项目。

【讨论】:

    【解决方案2】:

    如下代码:

    for (int i = 0; i <current_arrayList.size() ; i++) {
                    if(current_arrayList.get(i).getStyle().toLowerCase().contains(style)
                            && current_arrayList.get(i).getSize().toLowerCase().contains(size))
                    {
                        new_list.add(current_arrayList.get(i));
                        //if used break ,stop loop 
    
                    }
                    else if (current_arrayList.get(i).getSize().toLowerCase().contains(size)) {
                        new_list.add(current_arrayList.get(i));
    
                    }
    
                    else if (current_arrayList.get(i).getStyle().toLowerCase().contains(style)) {
                        new_list.add(current_arrayList.get(i));
    
                    }
                }
                current_arraylist.clear();
                adapter.filterSearch(new_list);
                adapter.notifyDataSetChanged();
    

    【讨论】:

    • 只是一个简单的问题,如果使用 break 它在第一个循环处停止,对吗?那么如何在最后一个循环中停止它呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    相关资源
    最近更新 更多