【问题标题】:String array reverse Java字符串数组逆Java
【发布时间】:2014-03-09 13:34:02
【问题描述】:

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

【问题讨论】:

    标签: java arrays string reverse


    【解决方案1】:

    这行看起来不对:

    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】:

      试试这些步骤:

      String[] strDays = new String[]{"Sunday", "Monday", "Tuesday", "Wednesday"};
      List<String> list = Arrays.asList(strDays);
      Collections.reverse(list);
      strDays = (String[]) list.toArray();
      

      【讨论】:

      • 最好的方法,没有时间消耗!太棒了!
      【解决方案3】:

      看起来您在内循环中使用了i 而不是j

       for (int j=s[i].length()-1;j>=0;j--)
            reverse=reverse+s[i].charAt(j);
      

      【讨论】:

        【解决方案4】:

        我建议你把这个小问题分成几块。

        编写一个单独的方法来反转单个字符串。让它工作和测试。只有这样,您才应该遍历集合或数组并将其应用于每个成员。

        如果您以较小的步骤进行调试,您会更轻松地进行调试。您的字符串反转方法被破坏的事实马上就会很明显。

        你不应该像从方法中那样向 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;
        }
        

        【讨论】:

          【解决方案5】:

          你的内循环应该是:

          for (int j=s[i].length()-1; j>=0; j--){
               reverse=reverse+s[i].charAt(j);
               // ... //
          }
          

          【讨论】:

            【解决方案6】:
            for (int j=s[i].length()-1; j >=0; j-- )
                                       ###   ### 
            

            你需要纠正你的内循环。而不是i,您需要使用循环变量j

            【讨论】:

              【解决方案7】:

              你为什么用这个:

               for (int j=s[i].length()-1;i>=0;i--)
              

              你应该改用这个:

               for (int j=s[i].length()-1;j>=0;j--)
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-10-11
                • 2014-12-15
                • 2018-08-10
                相关资源
                最近更新 更多