为什么我的Java字符串转换器不工作?
我的任务是反转字符串。我是通过将字符串转换为字符数组来实现的。然后将字符推送到堆栈或从堆栈弹出到字符数组。然后我将char数组转换回string。这是我的密码:为什么我的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
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的情况下反转字符串。但这确实有效。