Java 包围字符法
我正在研究一个java方法,该方法检查字符数组中的字符是否被字符包围。例如:abcdc,d被c包围。例如:abccc,没有被包围的字母。这是我到目前为止所拥有的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]){
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语句可能会更好,因为您只想知道是否存在一次。这可能会当你有很多元素时,你会变得更快更好。