我正在尝试将一组数字传递给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)
答案 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(' ')