簡體   English   中英

如果數組中的值不包含在另一個數組中,如何返回 false?

[英]How do I return false if a value in an array isn't contained in another array?

我有兩個 arrays。 一個是輸入用戶數組,另一個是選擇數組。 例如,用戶數組是 BLACK、RED、GREEN,而選擇數組是 BLUE、RED、GREEN。 因為 BLACK 不在選擇數組中,所以它會返回 false。 您也可以讓 RED,RED,RED 返回 True,因為紅色包含在選擇數組中,無論您使用多少次選擇都沒有關系。

這是我當前的代碼,但 isTrue 由於某種原因只會上升一次,我認為這不能說明有多個相同顏色的選擇。 我覺得必須有一個更簡單的方法來做到這一點?

public Boolean isValidColour(String userInput) {
        ArrayList<String> userPegsArray = new ArrayList<>();
        String[] userPegs = userInput.toUpperCase().split(",");
        int isTrue = 0;
        for (String peg: userPegs) {
            userPegsArray.add(peg);
        }

        for (int i = 0; i <Peg.values().length; i++) {
            for (String peg:userPegsArray) {
                if(peg.equals(Peg.valueOf(i).toString())) {
                    isTrue += 1;
                }
            }
        }
        if(isTrue == 5) {
            return true;
        }
        return false;
    }

更新:已解決,感謝評論中的幫助。

解決方案

    public Boolean isValidColour(String userInput) {
        ArrayList<String> userPegsArray = new ArrayList<>();
        String[] userPegs = userInput.toUpperCase().split(",");
        for (String peg: userPegs) {
            userPegsArray.add(peg);
        }

        Map pegMap = new HashMap<String,Integer>();
        for (int i = 0; i < Peg.values().length; i++) {
            pegMap.put(Peg.valueOf(i).toString(), i);
        }

        for (String peg:userPegs) {
            System.out.println("Peg: " + peg + " | pegMap: " + pegMap.toString());
            if (pegMap.containsKey(peg)) {
                System.out.println("ayyyayay");
                return true;
            }
        }
        return false;
    }

我覺得必須有一個更簡單的方法來做到這一點?

您是否嘗試過使用 HashMaps? 我不想給你完整的解決方案,因為我認為這是一個家庭作業問題。

請注意

    public Boolean isValidColour(String userInput) {
        List<String> userPegsArray = Arrays.asList(userInput.toUpperCase().split(","));
        return Peg.containsAll(userPegsArray);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM