【问题标题】: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--)