字符数组中的空格

时间:2013-01-03 06:05:58

标签: java

我只是想用字符数组做一些事情。当我扭转它时,每个原始角色之后都会有一个空间。为什么?我的代码片段就像这样

public class StringReverseChar {
//REVERSE A STRING CHARACTER BY CHARACTER
    static String mStr=".gnihtemos od ot gniyrT ma I";
    int len;
    int topOfS;
    char[] myReverse=new char[75];

    public StringReverseChar() {
         topOfS=-1;
         myReverse=new char[70];
    }
    public static void main(String ar[]){

        StringReverseChar mObj=new StringReverseChar();
        int len=mObj.calLen(mStr);
        for(int i=0;i<len;i++)
              mObj.pushChar(mStr.charAt(i));
//      System.out.println("The Reverse is:");
        while(mObj.topOfS !=-1)
        System.out.print(mObj.popChar());
    }

    private char popChar() {
        return myReverse[topOfS--];
    }
    private void pushChar(char c) {
        myReverse[++topOfS]=c;
        System.out.print(myReverse[topOfS++]);
    }

    private int calLen(String mStr2) {
        return mStr2.length();
    }
}

我的输出是这样的:相反的是:   我知道了吗?

4 个答案:

答案 0 :(得分:3)

罪魁祸首在这里:

private void pushChar(char c) {
    myReverse[++topOfS]=c;
    System.out.print(myReverse[topOfS++]);
}

你增加topOfS两次。

请注意,整个代码可以替换为:

public class StringReverseChar {
    static String mStr=".gnihtemos od ot gniyrT ma I";
    public static void main(String ar[]) {
        System.out.println(new StringBuilder(mStr).reverse());
    }
}

答案 1 :(得分:2)

- 首先,除非必要,否则你应该永远不会重新发明轮子。

- 使用StringBuilder (非线程安全)StringBuffer (线程安全)方法{{1 }}

<强>例如

reverse()

代码中的问题:

- 将其递增两次。

String mStr= ".gnihtemos od ot gniyrT ma I";

String reStr = new StringBuilder(mStr).reverse();

答案 2 :(得分:1)

myReverse[++topOfS]=c;
        System.out.print(myReverse[topOfS++]);

你为什么要增加两次?

答案 3 :(得分:1)

    private void pushChar(char c) {
        myReverse[++topOfS]=c;
       System.out.print(myReverse[topOfS++]);
   }

应该是:

    private void pushChar(char c) {
        myReverse[++topOfS]=c;
       System.out.print(myReverse[topOfS]);
   }

一个人。如果你做了那个改变,你还有问题吗?无法判断这是调试代码,还是总是存在的东西。