字符串数组反向Java
我试图在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
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();
最佳方法,无需耗费时间!伟大的