为什么我的 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()
我的任务是反转字符串。我是通过将字符串转换为 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()