Smalltalk打印集合元素被截断:读取TXT表格指定列输出异常求助
问题根因
你当前代码的核心问题是:rows集合中存储的是每一行的原始字符串,没有按空格分割为独立的列元素。调用currentRow at: (each asInteger)时,实际是在访问字符串的第N个字符,而非表格的第N列值。
比如第三行的原始字符串是'55 30 50',取第1位字符得到的就是'5',自然就出现了多位数截断的问题。
修复方案
修改readInput方法,读取每行后先按空格分割为列数组再存入rows即可:
readInput: inStream | line | rows := OrderedCollection new. [ (line := inStream nextLine) notNil ] whileTrue: [ "新增分割逻辑,按空格拆分每行的列元素" rows add: (line findTokens: ' '). Transcript show: 'read line:'; show: line; cr. ].
修改后rows中每个元素都是列值组成的数组,printCols方法无需改动,currentRow at: (each asInteger)就会正确取出对应列的完整值,不会再出现截断问题。
内容的提问来源于stack exchange,提问作者WKGuy
相关产品推荐
相关产品推荐

