【发布时间】:2016-04-21 09:54:35
【问题描述】:
我有这段代码应该做标题所说的,颠倒字符顺序而不改变单词的顺序:
package stackTests;
import java.util.Scanner;
import java.util.Stack;
public class StackTest
{
Stack<Character> stack;
public StackTest()
{
stack = new Stack<Character>();
}
public String reverseString(String str)
{
int start = 0;
int start2 = 0;
int size;
char space = ' ';
char[] cArr;
Scanner scan = new Scanner(str);
cArr = str.toCharArray();
for (; start < cArr.length; start++)
{
if(cArr[start] == space || start == cArr.length - 1)
{
for (; start2 < stack.size(); start++)
{
System.out.print(stack.pop());
}
}
else
{
stack.push(cArr[start]);
}
start2 = 0;
}
return str;
}
}
如果我输入一个像“Hello”这样的单词,它会正常工作——它会输出“olleH”——但是一旦它变得比一个单词更复杂,它就会开始输出一些奇怪的东西。“你好,我的名字是" 输出 "ollehem"。我对Stacks 真的很陌生,这是我第一次使用它们。我不确定Stacks是否存在逻辑错误或使用不当。
【问题讨论】:
-
那不可读。以可读的方式格式化您的代码。
-
你真的必须使用堆栈吗?这是作业的一部分吗?
-
你知道如何使用调试器吗?
-
可能相关(代码打高尔夫球):codegolf.stackexchange.com/questions/11142/…
-
我看不出堆栈适合您的问题。我想 1) 使用 String#split 将句子拆分为单词,2) 反转每个元素并将其按顺序添加到列表中,3) 将单词放回一起。