为什么我的 Java 字符串转换器不工作?

Why is my Java string converter not working?

我的任务是反转字符串。我是通过将字符串转换为 char 数组来实现的。然后将字符 to/from 推入并弹出一个堆栈到一个 char 数组。然后我将 char 数组转换回字符串。这是我的代码:

public class StringReverser {

public static void main(String[] args) {

    String convertThis = "hej";
    //print out char pre convert
    System.out.println(convertThis);

    //convert here
    StringReverser strrvs = new StringReverser();
    String newConvert = strrvs.convertString(convertThis);
    //print out char post convert
    System.out.println(newConvert);
}

public String convertString (String string){


    //convert string to char array
    char[] charToConvert = string.toCharArray();
    //get number of characters
    int s = charToConvert.length;
    //create a stack
    MyStack mystack = new MyStack(s);
    //push all character in character list on stack.
    for(char character : charToConvert){
        mystack.push(character);
    }
    //get all character from stack. they are now in reversed order
    int charnumb = 0;
    while(mystack.isEmpty() != false){
        charToConvert[charnumb] = mystack.pop();
        charnumb++;
    }
    //convert character array to string
    String newString = String.valueOf(charToConvert);
    return newString;

}

private class MyStack{

    //variables for size of stack size
    private int stackSize;
    private char[] stackArray;
    private int top;

    //create the stack
    public MyStack(int s) {

        stackSize = s;
        stackArray = new char[stackSize];
        top = -1;

    }

    //method for pushing character on top of stack.
    public void push(char push) {
        stackArray[++top] = push;
    }
    //method for pop the character on top of stack.
    public char pop() {
        return stackArray[top--];
    }
    //method for getting the character on top of stack.
    public long peek() {
        return stackArray[top];
    }
    //method for checking if stack is empty.
    public boolean isEmpty() {
        return (top == -1);
    }
    //method for checking if stack is full.
    public boolean isFull() {
        return (top == stackSize - 1);
    }


}

}

while(mystack.isEmpty() != false) 等同于 while (mystack.isEmpty),这意味着您的循环将立即退出而不会从堆栈中弹出任何内容。

您应该将其更改为:

while(!mystack.isEmpty()){
    charToConvert[charnumb] = mystack.pop();
    charnumb++;
}

您只需 StringBuilder 即可反转您的字符串。

new StringBuilder("AwesomeString").reverse().toString()