我有一个文本编辑器缓冲区hw分配与2堆栈(left
和right
)。一切都按照它应有的方式运作。但是我遇到的麻烦是它返回的空白太多。我特意试图填写toString()
方法来返回文本。 例如返回文本打印:toString方法删除太多的空格
T h e r e i s g r a n d e u r i n t h i s v i e w o f l i f e ,
有字母之间的单个空格,每个字之间的双空格。如何删除字母之间的空格,只有移除单词之间的空格1,这样我的字符串返回:
There is grandeur in this view of life,
public class Buffer {
private Stack<Character> left; // chars left of cursor
private Stack<Character> right; // chars right of cursor
// Create an empty buffer.
public Buffer() {
left = new Stack<Character>();
right = new Stack<Character>();
}
// Insert c at the cursor position.
public void insert(char c) {
left.push(c);
}
// Delete and return the character at the cursor.
public char delete() {
if (!right.isEmpty()){
return right.pop();
}else return 0;
}
// Move the cursor k positions to the left.
public void left(int k) {
while (!left.isEmpty() && --k >= 0){
right.push(left.pop());
}
}
// Move the cursor k positions to the right.
public void right(int k) {
while (!right.isEmpty() && --k >=0){
left.push(right.pop());
}
}
// Return the number of characters in the buffer.
public int size() {
return left.size()+right.size();
}
// Return a string representation of the buffer with a "|" character (not
// part of the buffer) at the cursor position.
public String toString() {
String a = (left+"|"+right);
return a;
}
// Test client (DO NOT EDIT).
public static void main(String[] args) {
Buffer buf = new Buffer();
String s = "There is grandeur in this view of life, with its "
+ "several powers, having been originally breathed into a few "
+ "forms or into one; and that, whilst this planet has gone "
+ "cycling on according to the fixed law of gravity, from so "
+ "simple a beginning endless forms most beautiful and most "
+ "wonderful have been, and are being, evolved. ~ "
+ "Charles Darwin, The Origin of Species";
for (int i = 0; i < s.length(); i++) {
buf.insert(s.charAt(i));
}
buf.left(buf.size());
buf.right(97);
s = "by the Creator ";
for (int i = 0; i < s.length(); i++) {
buf.insert(s.charAt(i));
}
buf.right(228);
buf.delete();
buf.insert('-');
buf.insert('-');
buf.left(342);
StdOut.println(buf);
}
}
请发布[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 – MikeCAT
您应该根据本网站的规则展示您最好的诚意尝试解决您的问题。请再看看[我如何问及回答作业问题](http://meta.stackexchange.com/a/10812/162852)。无论问题是出于家庭作业还是家庭作业(自学),此信息均有效。 –
toString()方法的代码是什么? –