Ruby printf“%-*”*s";问题

Ruby printf“%-*”*s";问题,ruby,Ruby,我在这里尝试使用这行代码: longest=twoOfArray.inject(0){| memo,word | memo>word.length?memo:word.length}, 然后把它放到这行的printf中,如下所示: twoOfArray.each{k,v |放置“%-*.*s”%[最长]+'+'*'.*v} 但是,它给了我一个错误: %':参数太少(ArgumentError) 这是否意味着我的longest变量有问题?还是我的语法错了?我似乎无法解决这个问题。有人看到这里出了什

我在这里尝试使用这行代码:

longest=twoOfArray.inject(0){| memo,word | memo>word.length?memo:word.length}
,

然后把它放到这行的printf中,如下所示:

twoOfArray.each{k,v |放置“%-*.*s”%[最长]+'+'*'.*v}

但是,它给了我一个错误:

%':参数太少(ArgumentError)


这是否意味着我的
longest
变量有问题?还是我的语法错了?我似乎无法解决这个问题。有人看到这里出了什么问题吗?

格式字符串“%-*.*s”需要三个参数:两个数字(每个数字一个)和一个字符串。您的数组只包含一个参数。

好的,谢谢,我不知道*是占位符。现在的
longest
变量应该返回数组中最长单词的长度。您是否知道我将如何修改
longest
变量以返回当前最大值和当前单词长度中的较大值?如果我不明白您的意思,我很抱歉,几天前就开始使用ruby了。你是说我的行应该是这样的:
twoOfArray.each{k,v|放置“%-*.*s”%[k,twoOfArray.max,twoOfArray.max.size]+'+'*.*v}
twoOfArray是数组还是散列?与其发布你所做的内容,不如发布你的数组,或者最好是数组的一个小示例,然后准确地发布输出应该是什么——不要描述输出,发布你想要的准确输出。当你说longest应该返回x和y时,这意味着longest将是包含两个值的东西,这是一个数组。这真的是你想要的吗?但是就像我说的,你的描述和代码是非感官的,所以只需发布你的数组/哈希/随便什么,以及你想要的确切输出。哈希/数组/随便什么:
{“it”=>3,“was”=>3,“the”=>3,“times”=>2}{“of”=>3,“it”=>2,“was”=>2,“it”=>3,“was”=>3,“the”=>2“,of”=>3,“of”=>2,“was”=>2,“was”{>2,“我们有”{>2”=>2,“在”=>2之前,“我们”=>2}{“我们”=>2,“是”=>2,“所有”=>2,“去”=>2,“直接”=>2}{“这个”=>2,“句点”=>2}{“它的”=>2}
输出应该是单词,并且一些星号取决于键的值是什么示例句点:************。需要最长的变量来确定宽度。
hash = {"it"=>3, "was"=>3, "the"=>3, "of"=>2, "times"=>2}

words_array = hash.keys
longest_word = words_array.max_by {|word| word.length}
max_len = longest_word.size

words_array.each do |word|
  number = hash[word]
  str = "#{'*' * (max_len - number)}#{word}#{'*' * number}"
  puts str
end

--output:--
**it***
**was***
**the***
***of**
***times**