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

为什么我的Java字符串转换器不工作?,java,algorithm,data-structures,Java,Algorithm,Data Structures,我的任务是反转字符串。我是通过将字符串转换为字符数组来实现的。然后将字符推送到堆栈或从堆栈弹出到字符数组。然后我将char数组转换回string。这是我的密码: public class StringReverser { public static void main(String[] args) { String convertThis = "hej"; //print out char pre convert System.out.println(convertT

我的任务是反转字符串。我是通过将字符串转换为字符数组来实现的。然后将字符推送到堆栈或从堆栈弹出到字符数组。然后我将char数组转换回string。这是我的密码:

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()

“不工作”是一个非常宽泛的术语。“到底出了什么问题?”我想我应该更好地解释我的问题。我的代码没有返回反向字符串,而是返回了我想要转换的相同字符串。但有人向我解释说,我的while循环中有一个错误,现在已经修复了。谢谢你提醒我没有充分解释我的问题,我下次发帖时会考虑的。谢谢。我知道我可以做到,但我的任务是在不使用StringBuilder的情况下反转字符串。但这确实有效。