好的,所以我正在研究一种方法,将数字字符串拆分为字符,并将每个字符作为整数顺序推送到两个不同的堆栈中,直到它看到操作员跳过它然后继续将其余字符作为整数推送进入堆栈。我的堆栈会一直显示未被读取的数字。正在阅读的文本文件如下所示:28302830-293817302
public void pushToStack(String line) {
boolean pushToFirstStack = true;
for (int i = 0; i < line.length(); i++) {
if (Character.isDigit(line.charAt(i))) {
if(pushToFirstStack){
System.out.print(Character.getNumericValue(line.charAt(i)));
Stack1.push(Character.getNumericValue(line.charAt(i)));
}else{
System.out.print(Character.getNumericValue(line.charAt(i)));
Stack2.push(Character.getNumericValue(line.charAt(i)));
}
pushToFirstStack = !pushToFirstStack;
} else {
//sets operator
if(line.charAt(i) == add){
return;
}
else{
setAdd = false;
}
}
}
//displaying stacks debug
Stack1.display();
Stack2.display();
}
答案 0 :(得分:0)
你没有提供示例输出的事实使得它有点难以回答,但我怀疑行pushToFirstStack = !pushToFirstStack;
应该在if的else
分支中。
现在,您正在使用具有奇数索引的数字构建第一个堆栈,并使用具有偶数索引的数字构建第二个堆栈,从而产生交错输出。