Ruby单行双输入:生成字符串与整数两类数组的实现需求
搞定双独立数组的Ruby实现方案
嘿,我明白你的需求了:要通过gets.chomp获取输入,搞出两个完全独立的数组——一个存符号(或者字符串),另一个存整数,还不能用transpose或者zip,怕输出的时候另一个数组被反复反转对吧?
我给你写个完整的实现,完全符合你的要求:
完整代码
# 先把两个数组分开初始化,确保完全独立 names = [] integers = [] # 先问要录入多少条数据 puts "要录入多少组数据呀?" count = gets.chomp.to_i # 循环录入每一组的名字和整数 count.times do |i| puts "#{i + 1}. 输入名字(比如A、B、C):" name = gets.chomp.to_sym # 要是想存字符串,把.to_sym去掉就行 names << name puts "#{i + 1}. 输入对应的整数:" num = gets.chomp.to_i integers << num end # 测试输出看看效果 puts "\n符号数组的内容:" names.each { |n| puts n } puts "\n整数数组的内容:" integers.each { |num| puts num }
为啥这么写?
- 完全独立的数组:
names和integers从一开始就是分开的,各自存各自的数据,根本不会有什么反转关联的问题,你想单独输出哪个就输出哪个,互不影响。 - 避开禁用方法:全程没碰
transpose或者zip,就是老老实实循环录入,把数据塞进对应的数组里,简单直接。 - Ruby风格写法:用
times循环比原代码的for x in (1..num)更符合Ruby的惯用写法,读起来也更顺。 - 灵活调整类型:要是你不想存符号,想存普通字符串,把
to_sym删掉就行,改起来超方便。
你可以试试运行这段代码,录入几组数据后分别输出两个数组,绝对不会出现你担心的反转问题——毕竟两个数组本来就没绑定在一起嘛!
内容的提问来源于stack exchange,提问作者N.S.Genez
相关产品推荐
相关产品推荐

