java小问题

BlueAmer 2012-04-08 12:48:44
public class Exchange{
public static void main(String[]args){
String[]a=new String[args.length];
for(int i=0;i<args.length;i++){
a[i]=args[i];
}

print(a);
change(a);
print(a);

}
public static void change(String[]a){
for(int i=0;i<a.length/2-1;i++){
String temp=a[i];
a[i]=a[a.length-1];
a[a.length-1]=temp;
}
}
public static void print(String[]a){
for(int i=0;i<a.length;i++){
System.out.print(a[i]);
}
System.out.println();
}
}

然后javac exchange.java
java exchange i love you
我想让他显示iloveyou的逆序
但是出来跟那个一样!
...全文
105 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
棒棒不是糖_ 2012-04-08
  • 打赏
  • 举报
回复
change 方法有问题。
因为必须到一半了就停止。
也就是说,你之前有一次 比如 1和9交换了一次。后面。又1和9交换了一次。
应该在交换之前加个判断语句。
棒棒不是糖_ 2012-04-08
  • 打赏
  • 举报
回复
最终正确代码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

public class Exchange{
public static void main(String[]args){
String[]a=new String[args.length];
for(int i=0;i<args.length;i++){
a[i]=args[i];
}
print(a);
change(a);


}
public static void change(String[]a){ //改变此a数组并不会改变原a数组
String temp;
for(int i=0;i<(a.length/2);i++){
temp=a[i];
a[i]=a[a.length-1-i];
a[a.length-1-i]=temp;
}
print(a); //在这边输出才能得到准确结果。
}

public static void print(String[]a){
for(int i=0;i<a.length;i++){
System.out.print(a[i]);
}
System.out.println();
}
}

棒棒不是糖_ 2012-04-08
  • 打赏
  • 举报
回复
问题出来了。不是算法的问题。
刚才没认真看。所以回答错了。抱歉。

不知你有没发现。那个是字符串有个定律。那就是内容不可改变性。你调查完change方法后。
你a数组的内容还是不会变的。
但是你讲print的方法放在change的最后面。就可以看到正确结果了。

public class Exchange{
public static void main(String[]args){
String[]a=new String[args.length];
System.out.println("长度;"+args.length);
for(int i=0;i<args.length;i++){
a[i]=args[i];
}
print(a);
change(a);


}
public static void change(String[]a){
String temp;
for(int i=0;i<a.length/2-1;i++){
temp=a[i];
a[i]=a[a.length-1];
a[a.length-1]=temp;
}
print(a);
}

public static void print(String[]a){
for(int i=0;i<a.length;i++){
System.out.print(a[i]);
}
System.out.println();
}
}



还有一点特别说明的。你如果使用 java命令传递参数给args的话。那么每个成员需要用 空格隔开。
否则永远只有一个args[0]字符串。
BlueAmer 2012-04-08
  • 打赏
  • 举报
回复
刚刚粘贴粘错了~~我的change方法跟二楼的一样~~~
awusoft 2012-04-08
  • 打赏
  • 举报
回复
public static void change(String[]a){
for(int i=0;i<a.length/2-1;i++){
String temp=a[i];
a[i]=a[a.length-1-i];
a[a.length-1-i]=temp;
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧