Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串数组反向Java_Java_Arrays_String_Reverse - Fatal编程技术网

字符串数组反向Java

字符串数组反向Java,java,arrays,string,reverse,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].leng

我试图在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");
}
私有静态无效回文(字符串[]s){
int标志=0;
字符串反转;
对于(int i=0;i=0;i--)
反向=反向+s[i]。字符(j);
如果(s[i].等于(反向))
{
系统输出打印项数(s[i]);
flag=1;
}
}
如果(标志==0)
System.out.println(“没有回文字符串”);
}

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

 for (int j=s[i].length()-1;j>=0;j--)
      reverse=reverse+s[i].charAt(j);
这一行看起来不对:

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

for (int j = s[i].length()-1; j >= 0; j--)
for (int j=s[i].length()-1; j>=0; j--){
     reverse=reverse+s[i].charAt(j);
     // ... //
}
换句话说:内部循环中的索引是错误的,它们应该使用
j
而不是
i
。作为旁注-这里有一个反转字符串的简单方法:

reverse = new StringBuilder(s[i]).reverse().toString();

您的内部循环应该是:

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

你为什么要用这个:

 for (int j=s[i].length()-1;i>=0;i--)
您应该改为使用此选项:

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

你需要纠正你的内部循环。您需要使用循环变量
j

而不是
i
,我建议您将这个小问题分成几部分

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

如果您以较小的步骤进行调试,则调试会更容易。事实上,您的字符串反转方法被破坏了,这一点很明显

你不应该把东西写进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;
}
公共静态字符串反转(字符串s){
StringBuilder reversed=新的StringBuilder(s.length());
//在这里反转一个字符串
return reversed.toString();
}
公共静态字符串[]反向所有(字符串[]原始){
String[]reversed=新字符串[originals.length];
对于(int i=0;i<0.length;++i){
反向[i]=反向(原件[i]);
}
反向返回;
}
尝试以下步骤:

String[] strDays = new String[]{"Sunday", "Monday", "Tuesday", "Wednesday"};
List<String> list = Arrays.asList(strDays);
Collections.reverse(list);
strDays = (String[]) list.toArray();
String[]strDays=新字符串[]{“星期日”、“星期一”、“星期二”、“星期三”};
List=Arrays.asList(strDays);
收款。反向(列表);
strDays=(字符串[])list.toArray();

最佳方法,无需耗费时间!伟大的