字符串数组反向Java

时间:2014-03-09 13:34:03

标签: java arrays string reverse

我试图在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");
}

7 个答案:

答案 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