如:String str="I am a student"; 我想把它反过来显示:"tneduts a ma I";
class  ChangeChar
{
public static void main(String[] args) 
{
String str="I am a student";
int j=str.length();
String str1[]= new String[j];

for(int i=0;i<str.length()-1;i++)
{str1[j-1]=str.substring(i,i);j--;}
for(int k=0;k<str.length();k++)
System.out.print(str1[k]);
}
}
上面是代码结果是NULL。请高手指教!

解决方案 »

  1.   

    for(int i=0;i<str.length()-1;i++)
    改成:
    for(int i=0;i<str.length();i++)str1[j-1]=str.substring(i,i);
    改成:
    str1[j-1]=str.substring(i,i + 1);
      

  2.   

    关键问题是你这个算法效率太低了,而且你这也不像“逆置”一个字符串,因为你把一个字符串“逆置”成了一个字符串数组。
    使用StringBuf类做中间转换比较好,或者像下面这样也可以:public class ChangeChar {    public static void main(String[] args) {
            String str="I am a student";
            int len = str.length();
            char[] buf = new char[len];
            str.getChars(0, len, buf, 0);
            
            for(int i = 0; i < len / 2; i++) {
                char tmp = buf[i];
                buf[i] = buf[len - i - 1];
                buf[len - i - 1] = tmp;
            }
            
            String newStr = new String(buf, 0, len);
            System.out.println(newStr);
        }   
    }
      

  3.   

    StringBuffer sb=new StringBuffer();
           sb.append("I am a student");
           sb=sb.reverse();
           System.out.println(sb);
      

  4.   

    StringBuffer sb=new StringBuffer();
           sb.append("I am a student");
           sb=sb.reverse();
           out.println(sb);