黑马程序员技术交流社区
标题:
求解?关于字符串调换位置的问题?
[打印本页]
作者:
HeiMaYSL
时间:
2012-5-10 10:09
标题:
求解?关于字符串调换位置的问题?
class test2
{
//定义某个字符串的打印方法。
public static void sop(String str)
{
System.out.println(str);
}
public static void main(String[] args)
{
String s=" ab cd ";
sop("("+s+")"); //打印没有去掉空格的字符串
sop("("+fanzhuan(s,6,7)+")");
}
public static String fanzhuan(String st,int start,int end)
{
//字符串变数组
char[] chs=st.toCharArray();
//反转数组
reverse(chs,start,end); //调用反转方法。 start 调转字符的开始下标,end是结束下标
return new String(chs);//将数组变成字符串。
}
public static String fanzhuan(String s)
{
return "";
}
//定义反转方法
private static void reverse(char[] arr,int x,int y)
{
for (int start=x,end=y-1;start<end;start++,end--) //注意包含头,不包含尾。因为长度-1,就是最后一个下标。所以,end=y-1;
{
swap(arr,start,end); //arr是传入的字符串转换成的数组,
//start是字符串从开始位置除空格后的下标,end是字符串从末位置除空格后的下标
}
}
//换位方法,注意用第三方变量。
private static void swap(char[] arr,int x,int y)
{
char temp=arr[x]; //把传入的数组的下标值,赋给第三方变量
arr[x]=arr[y];
arr[y]=temp;
}
}
问:这段代码是为了让字符串改变位置,如:sop("("+fanzhuan(s,6,7)+")");就是改变s这个字符串,从下标为6到7的字符转换一下位置?
怎么转换不了呢?求解啊?如果我想让字符串s里的a和b反转,怎么做?
作者:
韩慧阳
时间:
2012-5-10 10:35
//定义反转方法
private static void reverse(char[] arr,int x,int y)
{
for (int start=x,end=y;start<end;start++,end--) //注意包含头,不包含尾。因为长度-1,就是最后一个下标。所以,end=y-1;
//这里的问题。 这里没有注意包含头不包含尾的啊。方法都是你自己定义的。 y没有必要-1,如果-1那你传入的是x和y是6和7,start和end就相等了,所以for循环不满足条件啊,当然就不交换了啊
{
swap(arr,start,end); //arr是传入的字符串转换成的数组,
//start是字符串从开始位置除空格后的下标,end是字符串从末位置除空格后的下标
}
}
作者:
李啸
时间:
2012-5-10 10:36
public class DemoHeima {
public static void main(String[] args)
{
System.out.println( FanZhuan("abc",1,2));
}
public static String FanZhuan(String ss,int index,int onIndex){
char[] chars=ss.toCharArray();
char temp=chars[index];
chars[index]=chars[onIndex];
chars[onIndex]= temp;
return new String(chars);
}
}
作者:
徐然
时间:
2012-5-10 11:04
问题出在反转方法里
private static void reverse(char[] arr,int x,int y)
{
for (int start=x,end=y-1;start<end;start++,end--) //注意包含头,不包含尾。因为长度-1,就是最后一个下标。所以,end=y-1;
{
用于反转的方法,为什么包含头不包含尾呢,你传入的x是6,y是7,那你y-1不就是6了,6和6反转有意义吗,当然不能发转成功,把包含头不包含尾去掉,反转不需要
swap(arr,start,end); //arr是传入的字符串转换成的数组,
//start是字符串从开始位置除空格后的下标,end是字符串从末位置除空格后的下标
}
}
作者:
周素强
时间:
2012-5-10 11:14
class CharRep
{
public static void main(String[] args)
{
System.out.println(rep("Hello World!",'H','W'));
}
public static String rep(String str,char a,char b)
{
int x = str.indexOf(a);//获取a字符在字符串中的位置
int y = str.indexOf(b);//获取b字符在字符串中的位置
char[] ch = str.toCharArray();//将字符串转成字符数组
char temp = ch[x];//进行换位
ch[x] = ch[y];
ch[y] = temp;
return new String(ch);//返回换位后的字符串
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2