包围字符方法Java

时间:2017-03-19 18:07:53

标签: java arrays list loops foreach

我正在研究一种java方法,该方法检查字符数组中的字符是否被字符包围。例如:abcdc,d被c包围。例如:abccc,没有被包围的字母。这是我到目前为止所拥有的。

public static boolean surroundedCharacter(char[] letters){
    boolean result = false;
    for(char letter : letters)
        if(letters[letter-1] == letters[letter+1]){
            result = true;
        }
    return result;
} }

所以我基本上每个循环都有一个字母,并检查位置前的字母是否等于字母后面的字母。如果是,则表示该字母已被包围,并且应将结果更改为true。 junit测试说if语句错了,但我不知道如何修复它。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:1)

试试这个:

    public static boolean surroundedCharacter(char[] letters){
        boolean result = false;
           for( int i=1;i<letters.length-1;i++)
                    if(letters[i-1] == letters[i+1]){
                        result = true;
                    }
}
return result;}

答案 1 :(得分:1)

您必须使用整数作为索引:

public static boolean surroundedCharacter(char[] letters){
    boolean result = false;
    for(int i = 1; i < letters.length - 1; i++) {
        // You said that if the string is "abccc", should return false.
        // So, we check if the previous or the next letter is different to 
        //the actual value of i
        if((letters[i-1] == letters[i+1]) && (letters[i-1] != letters[i])) {
            result = true;
        }
    }
    return result; 
}

答案 2 :(得分:0)

你必须使用for循环而不是short。试试这个循环:

for(int i = 1; i< letters.length-1; i++){

        if(letters[i-1] == letters[i+1]){
            result = true;
        }

    }

答案 3 :(得分:0)

Java foreach旨在迭代元素之后的元素 如果需要在每次迭代时获得两个不同的元素,则应使用经典来使用int值。

此外,您不需要拥有中间变量。条件匹配时,您可以返回true。否则在循环后返回false。

最后,根据您的需要:

  

Ex:abccc,没有被包围的字母。

只有当包围的字符与其周围的字符不同时,才应接受匹配。

public static boolean surroundedCharacter(char[] letters){
    for(int i=1; i<letters.length-1; i++){
        var beforeLetter = letters[i-1];
        var afterLetter = letters[i+1];
        if(beforeLetter == afterLetter && beforeLetter != letters[i]){
            return true;
        }
     }
    return false;
 }