用他提出的问题帮助朋友。对于我的生活,我可以弄清楚为什么我的代码不能正常工作,我确信这是非常简单的我只需要另外一双眼睛来看看它,
public String[] bahB(String[] arr) {
int count=0;
for (int j = 0; j < arr.length; j++) {
String[] f = new String[arr[j].length()];
for (int i = 0; i < arr[j].length(); i++) {
f[i] = arr[j].substring(i, i + 1);
}
if(isPalindrome(f)){
count++;
}
}
String[] d = new String[count];
int y=0;
for (int j = 0; j < arr.length; j++) {
String[] f = new String[arr[j].length()];
for (int i = 0; i < arr[j].length(); i++) {
f[i] = arr[j].substring(i, i + 1);
}
if(isPalindrome(f)){
d[y]=arr[j];
y++;
}
}
return d;
}
public boolean isPalindrome(String[] x) {
int s1 = 0;
int s2 = x.length - 1;
while (s2 > s1) {
if (x[s1] != x[s2]) {
return false;
}
++s1;
--s2;
}
return true;
}
我的代码开始于创建一个计数器,该计数器假定在给定的String数组中得到回文数量,这在Palindrome方法中不是问题所以它必须是这些行中的东西
int count=0;
for (int j = 0; j < arr.length; j++) {
String[] f = new String[arr[j].length()];
for (int i = 0; i < arr[j].length(); i++) {
f[i] = arr[j].substring(i, i + 1);
}
if(isPalindrome(f)){
count++;
}
感谢任何花时间阅读此内容的人
答案 0 :(得分:2)
我不确定你是如何决定“这不是Palindrome方法中的问题”,因为事实上,你的isPalindrome
已经完全破碎了。这样:
if (x[s1] != x[s2]) {
表示“如果x[s1]
和x[s2]
是对String
”的同一个实例的引用;而你的意思是“如果x[s1]
和x[s2]
引用具有相同内容的String
个实例”,即:
if (!x[s1].equals(x[s2])) {
(但实际上,你不应该在这里使用String[]
;你应该使用char[]
,或String
使用charAt
。< / p>