【问题标题】:Search in String Array an order在字符串数组中搜索订单
【发布时间】:2017-05-25 09:17:25
【问题描述】:

我想知道字符串数组中的搜索结果如何:

示例:

String[] chestOrder = new String[]{"silver", "silver", "silver", "gold", "silver", "silver", "gold", "silver", "silver",

如果我搜索: Silver Silver Silver Gold,我怎样才能得到下一个字符串?所以这里是银色的。

谢谢。

【问题讨论】:

    标签: java android arrays string


    【解决方案1】:

    我的理解是,如果连续3次获得银,之后获得金,你想获得下一个字符串。

    所以在这段代码中,它检查是否有连续的银银银金,并将下一个字符串获取到变量并打印出来。

        String[] chestOrder = new String[]{"silver", "silver", "silver", "gold", "silver", "silver", "gold", "silver", "silver"};
        String next = null;
    
        for(int i = 0 ; i < chestOrder.length ; i++){
            if(i <= (chestOrder.length - 3)){
                if(chestOrder[i].equals("silver") && chestOrder[i+1].equals("silver") && chestOrder[i+2].equals("silver") && chestOrder[i+3].equals("gold")){
                next = chestOrder[i+4];
                }
            }
    
        }
    
        System.out.println(next);
    

    【讨论】:

    • 还有哪些与此相关的案例,如果可以的话,我会尝试改进答案。
    • 如果他想要银金、金银或只是银等的结果..
    • 你的意思是不同的顺序吗?
    • 不,如果他想搜索不同数量的搜索词怎么办。你有 and 子句意味着他必须有 4 个搜索词。
    【解决方案2】:
     public static void searchStringArray() {
            String[] chestOrder = { "silver", "silver", "silver", "gold", "silver",
                    "silver", "gold", "silver", "silver" };
    
            String searchString = "silver silver silver gold";
            StringBuilder tempStr = new StringBuilder();
            for (String s : chestOrder) {
                tempStr.append(s + " ");
            }
            Scanner scanner = new Scanner(tempStr.toString());
            while (scanner.hasNext()) {
                if (null != scanner.findInLine(searchString)) {
                    System.out.println("" + scanner.next());
                } else {
                    scanner.next();
                }
            }
            scanner.close();
    
        }
    

    【讨论】:

    • 谢谢 :) 但我怎么能做只有一个结果。因为scanner.next() 将我其余的价值观归还给我。例如result = silver silver gold。但我想要result = silver。只有第一个结果。这是可能的 ?如果是,你知道怎么做吗?我尝试使用scanner.nextLine,但它是一样的
    • 你试过这个代码吗?我已经测试了它然后发布。请尝试一下,一旦它实现了您想要的输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2023-03-13
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多