【发布时间】:2014-04-27 22:18:52
【问题描述】:
我试图通过在字符串的每一端使用两个指针变量来实现字符串反转算法,其中 i 指向开头,j 指向结尾。交换这些位置的元素,然后 i 和 j 分别递增和递减,直到 i 小于 j 且 i 不等于 j。我在执行此操作时将字符串存储在字符数组中,因为字符串在 java 中是不可变的。但是,当我尝试使用 toString() 方法将此字符数组转换回字符串时,它会显示随机值。我知道代码是正确的,因为如果我输出字符数组,它会显示正确的值。
public class switcher {
int i=0,j;
char temp;
public void reverse(String s){
char [] ar = s.toCharArray();
j=ar.length-1;
while(i!=j&&i<j){
temp = ar[i];
ar[i]=ar[j];
ar[j]=temp;
i++;
j--;
}
String b=ar.toString();
System.out.println(b);
System.out.println(ar);
}
两个打印语句的输出如下:
阿米斯塔德 [C@22a79c31 达西马
如您所见,字符串输出不正确。但是,数组输出是完美的。 请告诉我我做错了什么。
【问题讨论】:
-
是的,这就是数组返回的 toString。考虑使用
System.out.println(java.util.Arrays.toString(ar));。 -
... 或将此字符数组作为新字符串的参数传递,例如
String b=new String(ar); -
出于好奇,您在此处发帖之前在 Google 中搜索了什么?
-
数组打印正确,是我关心的字符串
-
Suraj,阅读 Pshemo 评论中的答案。
标签: java arrays string tostring