将数组的各个元素传递给Ruby中的case语句--LCD显示数字

时间:2017-04-01 21:45:22

标签: arrays ruby numbers lcd digital

我正在尝试将一组数字传递给case语句。 例如:我要求用户输入一个值,例如12.然后我将其拆分为数组[1,2]。然后我将它传递给我的方法案例陈述。我的案例陈述是输出数字格式1和2.

我的问题: 我不能让它打印超过1个元素的输入。 如何将1和2输出为1个数组的数字?或者用户输入?我的代码远远不够了吗?

我的代码:

puts "Enter numbers between 0-9 up to 2 digits: "

x = gets.chomp
x = x.split('')

def digital_number(n)

digits = n

#Start case for digit input
  case digits
  when ["1"]
  puts " | "
  puts "   "
  puts " | "
  puts "   "
  puts n

  when ["2"]
  puts " - "
  puts "  |"
  puts " - "
  puts "|  "
  puts " - "

  else
  puts "That is not an available number."

  end
end

digital_number(x)

3 个答案:

答案 0 :(得分:0)

currentUser是您的数字数组。您应该按顺序将每个数字传递给x

case

以数字为例:

number = gets.chomp
digits = number.split('')

digits.each { |digit| digital_number(digit) }

答案 1 :(得分:0)

这与Vasily Yudin的回答非常类似,只是扫描和他在评论中也说的一样。

puts "Enter numbers between 0-9 up to 2 digits: "

x = gets.chomp
@arr = []

def digital_number(n)

  #Start case for digit input
  case n
  when "1" 
    @arr << " | "
    @arr << " | "
    puts n

  when "2" 
    @arr << "-" 
    @arr << " |"
    @arr << "-" 
    @arr << "| "
    @arr << "-" 
  else
    puts "That is not an available number."
  end 
end

x.scan(/\w/).each{|d| digital_number(d)}
puts @arr.join(' ')

答案 2 :(得分:0)

下面的代码解决了我的问题。可以删除&#39;#&#39;对于ARGV,如果你想在代码中加入一个参数。但只是为了终端使用,我们有gets.chomp。谢谢您的帮助。这解决了我的问题,即使它可能不是最有效的。

# Add an argument in the terminal and
# .to_s converts the argument into a string
# so that ".scan" can take a string argument

#x = ARGV.to_s

x = gets.chomp
puts "Arguments entered is between 0-9: #{x}"

#These are empty arrays that get added in the cases
@arr1 = []
@arr2 = []
@arr3 = []
@arr4 = []
@arr5 = []

def digital_number(n)

#Start case for digit input
case n

when "0"
@arr1 << " - "
@arr2 << "| |"
@arr3 << "   "
@arr4 << "| |"
@arr5 << " - "

when "1"
@arr1 << "   "
@arr2 << " | "
@arr3 << "   "
@arr4 << " | "
@arr5 << "   "

when "2"
@arr1 << " - "
@arr2 << "  |"
@arr3 << " - "
@arr4 << "|  "
@arr5 << " - "

when '3'
@arr1 << " - "
@arr2 << "  |"
@arr3 << " - "
@arr4 << "  |"
@arr5 << " - "

when '4'
@arr1 << "   "
@arr2 << "| |"
@arr3 << " - "
@arr4 << "  |"
@arr5 << "   "

when '5'
@arr1 << " - "
@arr2 << "|  "
@arr3 << " - "
@arr4 << "  |"
@arr5 << " - "

when '6'
@arr1 << " - "
@arr2 << "|  "
@arr3 << " - "
@arr4 << "| |"
@arr5 << " - "

when '7'
@arr1 << "-- "
@arr2 << "  |"
@arr3 << "   "
@arr4 << "  |"
@arr5 << "   "

when '8'
@arr1 << " - "
@arr2 << "| |"
@arr3 << " - "
@arr4 << "| |"
@arr5 << " - "

when '9'
@arr1 << " - "
@arr2 << "| |"
@arr3 << " - "
@arr4 << "  |"
@arr5 << " - "

else
  puts "That is not an available number."
end
end
# This part iterates the method for each numbers inputted
x.scan(/\w/).each{|d| digital_number(d)}

# Output #
puts "   "
puts @arr1.join(' ')
puts @arr2.join(' ')
puts @arr3.join(' ')
puts @arr4.join(' ')
puts @arr5.join(' ')