黑马程序员技术交流社区
标题:
对指定字符串的部分进行反转
[打印本页]
作者:
葛奎
时间:
2012-6-26 18:28
标题:
对指定字符串的部分进行反转
本帖最后由 葛奎 于 2012-6-26 18:36 编辑
class StringTest3
{
public static void main(String[] args)
{
String str="abcdef";
char[] ch=str.toCharArray();
char[] ch1=startToEnd(ch,4,4);<font size="5">//请问:(ch,2,4) (ch,0,5)这里面不管输入的是什么,怎么最后的运行的结果都是abcdef????</font>
sop(charToString(ch1));
}
public static String charToString(char[] ch)
{
String str="";
for(int i=0;i<ch.length;i++)
{
str+=ch[i];
}
return str;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static char[] startToEnd(char[] arr,int start,int end)
{
if(start<0||end>(arr.length-1)||(start-end)<=0)
return arr;
else
{
while((end-start)>=0)
{
swap(arr,start,end);
start++;
end--;
}
return arr;
}
}
public static void swap(char[] arr,int a,int b)
{
char ch;
ch=arr[a];
arr[a]=arr[b];
arr[b]=ch;
}
}
复制代码
作者:
韦念欣
时间:
2012-6-26 18:29
本帖最后由 韦念欣 于 2012-6-26 18:36 编辑
startToEnd方法中的 if 判断条件写错了!
class StringTest3
{
public static void main(String[] args)
{
String str="abcdef";
char[] ch=str.toCharArray();
char[] ch1=startToEnd(ch,0,5);
sop(charToString(ch1));
}
public static String charToString(char[] ch)
{
String str="";
for(int i=0;i<ch.length;i++)
{
str+=ch;
}
return str;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static char[] startToEnd(char[] arr,int start,int end)
{
if(start<0||end>(arr.length-1)||(start-end)>=0) // 改成(start-end)>=0
return arr;
else
{
while((end-start)>=0)
{
swap(arr,start,end);
start++;
end--;
}
return arr;
}
}
public static void swap(char[] arr,int a,int b)
{
char ch;
ch=arr[a];
arr[a]=arr;
arr=ch;
}
}
作者:
周朋飞
时间:
2012-6-27 00:59
楼主遇到问题可以先debug一下,你就会发现你出的错误了,你的判断条件肯定为真,所以直接就返回了就不会往下执行了,开始下标本来就应该小于结尾的下标的 呵呵 只要将<=改成大于等于0就行了 因为等于0 的情况跟你直接返回是一个结果
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2