Smalltalk奇怪的打印错误

Smalltalk奇怪的打印错误,smalltalk,gnu-smalltalk,Smalltalk,Gnu Smalltalk,为了“填充”我正在打印的数字,使其始终为固定数量的字符,我根据给定数字中的整数数量生成填充字符串: pad := ' '. (freqVal < 10) ifTrue: [ pad := ' ' ]. ((freqVal < 100) & (freqVal > 9)) ifTrue: [ pad := ' ' ]. ((freqVal < 1000) & (freqVal > 99)) ifTrue: [ pad := ' ' ]. st

为了“填充”我正在打印的数字,使其始终为固定数量的字符,我根据给定数字中的整数数量生成填充字符串:

pad := '    '.
(freqVal < 10) ifTrue: [ pad := '   ' ].
((freqVal < 100) & (freqVal > 9)) ifTrue: [ pad := '  ' ].
((freqVal < 1000) & (freqVal > 99)) ifTrue: [ pad := ' ' ].
stdout<<pad<<freqVal<<<<nl
pad:=''。
(freqVal<10)如果真的:[pad:=''。
((freqVal<100)和(freqVal>9))如果正确:[pad:=''。
((freqVal<1000)和(freqVal>99))如果正确:[pad:=''。

stdout我不太了解Gnu Smalltalk。当然也有一些方便的字符串方法或格式化程序可以重用。我的建议是首先将数字转换成字符串,然后用空白填充对其进行格式化。这样可以避免您遇到的类型转换问题

新字符串方法(最好是ST发行版中的现有方法):


我不太了解Gnu Smalltalk。当然也有一些方便的字符串方法或格式化程序可以重用。我的建议是首先将数字转换成字符串,然后用空白填充对其进行格式化。这样可以避免您遇到的类型转换问题

新字符串方法(最好是ST发行版中的现有方法):


当我在GNU Smalltalk中尝试此代码时,
当我在GNU Smalltalk中尝试此代码时,

withLeading: aCharacter size: anInteger
   (anInteger < self size) ifTrue: [^self copyFrom: 1 to: anInteger].
   ^((self species new: anInteger - self size) atAllPut: aCharacter ), self
9 asString withLeading: ($ ) size: 10           "result '         9'"
10 asString withLeading: ($ ) size: 10          "result '        10'"
999 asString withLeading: ($ ) size: 10         "result '       999'"