2017-04-01 2 views
1

case 문에 숫자 배열을 전달하려고합니다. 예 : 사용자에게 값 12를 입력하도록 요청합니다. 그런 다음 배열 [1,2]로 분할합니다. 그런 다음 메서드 케이스 문으로 전달합니다. 내 사례 문장은 1과 2의 디지털 형식을 출력하는 것입니다.배열의 개별 요소를 Ruby의 case 문에 전달합니다. - LCD 디스플레이 번호

내 호 : 1 요소의 입력 이상을 인쇄 할 수 없습니다. 1과 2를 모두 하나의 배열로 디지털 숫자로 출력 할 수 있습니까? 또는 사용자 입력을 사용합니까? 내 코드가 멀리 떨어져 있습니까?

내 코드 :

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

x이 숫자의 배열입니다. 숫자

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

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

그리고 경우 : 당신은 case 순차적으로 각 숫자를 통과해야 그 사람도에서 말씀하신 것을

case digit 
when '1' 
    # ... 
when '2' 
    # ... 
end 
+0

감사! 내가 각 경우에 위의 각 기능을 넣었 기 때문에 잠시 혼란 스러웠습니다. 내 두뇌에서 나는 당신이 가졌던 것을 생각했다. 그러나 나는 전에 정확하게 그것을 쓸 수 있다고 생각하지 않는다. – balee1991

+0

디지털 번호를 어떻게 나란히 출력 할 수 있는지 알고 계십니까? 이후 각 번호를 통과하고 새로운 라인에 출력. 그들을 수평으로 배치하는 방법이 있습니까? 그래서 가로로 인쇄하는 대신 1 2를 수직으로 1, 2? – balee1991

+0

숫자를 하나씩 인쇄하는 것은 불가능합니다. 각 줄을 변수에 저장할 수 있습니다. 'when'1 'lines [0] <<'| 'lines [1] <<' ''등등 ('lines'은 여기에 문자열의 배열입니다), 한 줄씩 인쇄합니다. 즉,'lines.each {| line | 줄을 넣는다.''. –

0

이 그냥 스캔과 같은과 바실리 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(' ') 
+0

나는 당신이 내게 주신 것을 조작 할 생각이 있다고 생각합니다. 나는 그것을 시도하고 그것을 재현하면 그것을 재현 할 것입니다 ... – balee1991

+0

이것이 작동하면 내 대답을 선택해야합니다, 건배. – Jake

+0

나는 도왔던 사람들을 upvoted. 그러나 15 개 명성 이하의 사람들에게는 대중적으로 공개 될 수 없다고합니다. – balee1991

0

아래 코드는 내 문제를 해결합니다. 코드에 인수를 넣으려면 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(' ') 
관련 문제