The case
statement in Ruby allows us to execute a block of code among many alternatives.
You can do the same thing with multiple if...elsif...else statements. However, the syntax of the case
statement is much easier to read and write.
Syntax of the case Statement
case expression
when value1
# Code to run if expression == value1
when value2
# Code to run if expression == value2
...
else
# Code to run if none of the 'when' conditions match
end
How does the case statement work?
The expression
is evaluated once and compared with each when
value using the ==
operator.
- If there is a match, the code under that
when
label is executed. For example, ifexpression == value2
istrue
, the code afterwhen value2
is executed. - If there is no match, the code inside the
else
block runs (if provided).
Flowchart of case Statement

Example 1: Simple Size Checker Using case Statement
# Ruby program to check the size
# using the case statement
number = 44
case number
when 29
puts "Small"
when 42
puts "Medium"
when 44
puts "Large"
when 48
puts "Extra Large"
else
puts "Unknown"
end
Output
Large
In the above example, we have used the case
statement to find the size. Here, we have a variable number which is compared with each value in the when
clauses.
Since the value matches with 44, the code inside when 44
is executed.
puts "Large"
Example 2: Simple Calculator Using case Statement
# Program to build a simple calculator
# using case statement
print "Enter an operator (+, -, *, /): ";
operator = gets.chomp
print "Enter first number: "
num1 = gets.chomp.to_f
print "Enter second number: "
num2 = gets.chomp.to_f
case operator
when "+"
print "#{num1} + #{num2} = #{num1 + num2}"
when "-"
print "#{num1} - #{num2} = #{num1 - num2}"
when "*"
print "#{num1} * #{num2} = #{num1 * num2}"
when "/"
if num2 == 0
print "Cannot divide by zero."
else
print "#{num1} / #{num2} = #{num1 / num2}"
end
else
# Invalid operator handling
print "Invalid operator!"
end
Sample Output 1
Enter an operator (+, -, *, /): + Enter first number: 6 Enter second number: 3 6.0 + 3.0 = 9.0
Sample Output 2
Enter an operator (+, -, *, /): * Enter first number: 6 Enter second number: 3 6.0 * 3.0 = 18.0
In the above program, we prompted the user to:
- Enter an operator:
+
,-
,*
, or/
. - Enter the first number:
num1
. - Enter the second number:
num2
.
Based on the user input, the case
statement performs the corresponding calculation.
If the input operator is not recognized, the program shows an Invalid operator
message.
More on Ruby case Statement
You can write the when
condition and the code to execute on the same line using then
keyword. For example,
number = 2
case number
when 1 then puts "One"
when 2 then puts "Two"
when 3 then puts "Three"
else puts "Other"
end
# Output: Two
Notice that we haven't used then
with the else
statement; it's only used with when
.
Ruby allows you to use a case
statement without an expression. In this form, each when
clause acts like an if
condition. For example,
age = 25
case
when age < 13
puts "Child"
when age < 20
puts "Teen"
when age < 60
puts "Adult"
else
puts "Senior"
end
# Output: Adult
The above code is equivalent to:
age = 25
if age < 13
puts "Child"
elsif age < 20
puts "Teen"
elsif age < 60
puts "Adult"
else
puts "Senior"
end
You can match multiple values in a single when
by separating them with commas. For example,
day = "Sunday"
case day
when "Saturday", "Sunday"
puts "It is the weekend!"
else
puts "It is a weekday."
end
# Output: It is the weekend!