Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 包围字符法_Java_Arrays_List_Loops_Foreach - Fatal编程技术网

Java 包围字符法

Java 包围字符法,java,arrays,list,loops,foreach,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]){

我正在研究一个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;
} }
所以我基本上有一个for-each循环,以字母形式遍历字母,并检查位置前的字母是否等于位置后的字母。如果是,则表示该字母已被包围,并应将结果更改为true。junit测试表明if语句是错误的,但我不知道如何修复它。感谢您的帮助

试试这个:

    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;}
公共静态布尔环绕字符(字符[]个字母){
布尔结果=假;
对于(inti=1;i试试这个:

    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;}
公共静态布尔环绕字符(字符[]个字母){
布尔结果=假;

对于(int i=1;i您必须使用for循环,而不是for的缩写。请尝试以下for循环:

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

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

    }
for(int i=1;i
必须使用for循环,而不是for的缩写。请尝试以下for循环:

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

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

    }
for(int i=1;i
Java foreach设计用于一个元素一个元素地迭代。
如果需要在每次迭代中获得两个不同的元素,您应该使用经典来使用int值。

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

最后,根据您的需要:

例如: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;
 } 
公共静态布尔环绕字符(字符[]个字母){

对于(inti=1;i,Java foreach设计为一个元素一个元素地迭代。
如果需要在每次迭代中获得两个不同的元素,您应该使用经典来使用int值。

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

最后,根据您的需要:

例如: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;
 } 
公共静态布尔环绕字符(字符[]个字母){

对于(int i=1;i,必须使用整数作为索引:

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; 
}
公共静态布尔环绕字符(字符[]个字母){
布尔结果=假;
for(int i=1;i
索引必须使用整数:

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; 
}
公共静态布尔环绕字符(字符[]个字母){
布尔结果=假;
for(int i=1;i
数组使用整数作为索引。对于
字母[letter-1]
您试图将一个字符减1,但这不起作用。您应该使用索引for loop而不是foreach loop为什么说“abccc”没有包围的字母?数组使用整数作为索引。对于
字母[letter-1]
您试图将一个字符减1,但这不起作用您应该使用索引for loop而不是foreach loop为什么说“abccc”没有包围的字母吗?另外,在result=true之后,添加break语句可能会更好,因为您只想知道是否存在一次。当您有许多元素时,这可能会更快更好。此外,在result=true之后,添加break语句可能会更好,因为您只想知道是否存在一次。这可能会当你有很多元素时,你会变得更快更好。