我试图在java中反转数组中的所有字符串,但似乎用第一个写了所有字符串。
private static void palindrome(String[] s) {
int flag=0;
String reverse;
for(int i=0;i<n;i++) // n is declared globally as number of strings
{
reverse="";
for (int j=s[i].length()-1;i>=0;i--)
reverse=reverse+s[i].charAt(j);
if(s[i].equals(reverse))
{
System.out.println(s[i]);
flag=1;
}
}
if(flag==0)
System.out.println("There are no palindromic strings");
}
答案 0 :(得分:2)
您似乎在内部循环中使用了i
而不是j
。
for (int j=s[i].length()-1;j>=0;j--)
reverse=reverse+s[i].charAt(j);
答案 1 :(得分:2)
这一行看起来不对:
for (int j = s[i].length()-1; i >= 0; i--)
应该是:
for (int j = s[i].length()-1; j >= 0; j--)
换句话说:内部循环中的索引是错误的,它们应该使用j
而不是i
。作为旁注 - 这是一种更简单的方法来反转字符串:
reverse = new StringBuilder(s[i]).reverse().toString();
答案 2 :(得分:1)
我建议你把这个小问题分成几块。
编写一个单独的方法来反转单个String。让它工作和测试。只有这样你才能迭代一个集合或数组并将其应用于每个成员。
如果您以较小的步骤执行此操作,则可以更轻松地进行调试。事实上你的字符串翻转方法已经很明显了。
您不应该像使用方法那样将内容写入System.out。
public static String reverse(String s) {
StringBuilder reversed = new StringBuilder(s.length());
// reverse one string here
return reversed.toString();
}
public static String [] reverseAll(String [] originals) {
String [] reversed = new String[originals.length];
for (int i = 0; i < originals.length; ++i) {
reversed[i] = reverse(originals[i]);
}
return reversed;
}
答案 3 :(得分:1)
尝试以下步骤:
String[] strDays = new String[]{"Sunday", "Monday", "Tuesday", "Wednesday"};
List<String> list = Arrays.asList(strDays);
Collections.reverse(list);
strDays = (String[]) list.toArray();
答案 4 :(得分:0)
你的内循环应该是:
for (int j=s[i].length()-1; j>=0; j--){
reverse=reverse+s[i].charAt(j);
// ... //
}
答案 5 :(得分:0)
你为什么要用这个:
for (int j=s[i].length()-1;i>=0;i--)
你应该改用:
for (int j=s[i].length()-1;j>=0;j--)
答案 6 :(得分:0)
for (int j=s[i].length()-1; j >=0; j-- )
### ###
你需要纠正你的内循环。而不是i
,您需要使用循环变量j
。