对于我正在学习的课程,我将创建一个测试字符串是否为回文的程序。我们应该每次只使用一个8个字符的字符串并以这种方式对其进行硬编码,但我想要超越它并制作一些东西来测试任何字符串。不幸的是,这段代码似乎无法回归真实,我老实说也不确定原因。
public static boolean palindromeTest(String input){
//This portion declares variables necessary for testing, and modifies them if necessary.
int inputLength=input.length();
char[] Chars=input.toCharArray();
for(int j=0; j<inputLength; j++){
Character.toLowerCase(Chars[j]); //makes all characters in input lower case
//This portion performs the palindrome test
}
if(inputLength%2>0){ //if length is odd
inputLength=(inputLength-1)/2;
for(int i=0; i>0; i++){
if(Chars[i]!=Chars[inputLength-i]) //tests equality first and last in pairs via for loop
return false; //break;
}
}else{ //if length is even
inputLength=(inputLength)/2;
for(int i=0; i>0; i++){
if(Chars[i]!=Chars[inputLength-i]) //tests equality first and last in pairs via for loop
return false; //break;
}
}
return true; //if all tests are passed, input is indeed a palindrome
}
答案 0 :(得分:3)
这是因为
for(int i=0; i>0; i++){
for循环中的代码永远不会被执行,因为i永远不会大于0
修改强> 而且
if(charArray[i]!=charArray[inputLength - i])
有点不对,因为你说你的字符串是女士,inputLength = inputLength-1
使上述条件检查“m”和“d”而不是它应该如何工作
正确的解决方案是
inputLength = inputLength / 2;
int j= input.length()-1;
for(int i =0; i< inputLength; i++, j--) {
if(charArray[i]!=charArray[j]) {
return false;
}
}
答案 1 :(得分:0)
使用for循环和char数组的回文测试方法如下:
public static boolean palindromeTest(String input){
char[] Chars=input.toCharArray();
for(int i=0,j=Chars.length-1;i<j;i++,j--){
if(Chars[i]!=Chars[j]){
return false;
}
}
return true;
}