2 yığınlı bir metin düzenleyici buffer hw atama (left
ve right
) var. Her şey, çoğunlukla bunun için gereken şekilde çalışır. Ama sahip olduğum sorun, çok fazla beyaz boşluk döndürmesi. Özellikle, metni döndürmek için toString()
yöntemini doldurmaya çalışıyorum. örneğin dönüş metin baskılar: harfler arasında tek boşluk ve her kelimenin arasındaki çift boşluklar vardırtoString yöntemi çok fazla whitespaces'i kaldırmak için
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 ,
.
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);
}
}
Lütfen bir [Minimal, Tam ve Doğrulanabilir örnek] (http://stackoverflow.com/help/mcve) gönderin. – MikeCAT
Sorunu, bu sitenin kuralları uyarınca sorularınızla çözmek için en iyi niyetinizi göstermelisiniz. Lütfen ayrıca [Ev ödevi sorularını nasıl sorabilirim ve cevaplarım?] Bölümüne bir göz atın (http://meta.stackexchange.com/a/10812/162852). Bu bilgi, soru ev ödevi veya ev işi için (kendi kendine çalışma) olsun ya da olmasın geçerlidir. –
toString() yönteminizin kodu nedir? –