当两个测试后循环(即do..while循环)一起工作以完成任务时,这称为do ... while循环的嵌套。它意味着有两个do-while循环,第一个循环充当外部循环,而第二个循环充当内部循环。两个循环的执行都将以以下方式进行:首先,指针将与外部循环一起使用,然后在执行完块后检查条件时,它将移至内部循环。再次在该块内部执行,然后将检查条件,然后指针将移至外部循环以检查外部循环的指定布尔条件。在此循环中,这两个块将至少执行一次,因为do-while是退出控制循环。
在Ruby中,可以在以下语法的帮助下完成do ... while循环的嵌套:
loop do # 代码块 loop do # 代码块 break if Condition end break if Condition end
范例1:
=begin Ruby program to check the number of Armstrong numbers present between two limits using a nested do-while loop =end puts "Enter upper limit:-" ul=gets.chomp.to_i puts "Enter lower limit:-" ll=gets.chomp.to_i loop do num=ul temp=ul arm=0 loop do rem=num%10 num=num/10 arm=arm+rem*rem*rem if num==0 break end end if temp==arm puts "#{temp} is armstrong" end ul=ul-1 if ul==ll break end end
输出结果
Enter upper limit:- 1000 Enter lower limit:- 100 407 is armstrong 371 is armstrong 370 is armstrong 153 is armstrong
范例2:
=begin Ruby program to check the number of numbers present between two limits using a nested do-while loop =end puts "Enter upper limit:-" ul=gets.chomp.to_i puts "Enter lower limit:-" ll=gets.chomp.to_i loop do num=ul temp=ul pal=0 loop do rem=num%10 num=num/10 pal=pal*10+rem if num==0 break end end if temp==pal puts "#{temp} is palindrome" end ul=ul-1 if ul==ll break end end
输出结果
Enter upper limit:- 200 Enter lower limit:- 100 191 is palindrome 181 is palindrome 171 is palindrome 161 is palindrome 151 is palindrome 141 is palindrome 131 is palindrome 121 is palindrome 111 is palindrome 101 is palindrome
在上面的示例中,您可以观察到两个do-while循环协同工作,以找到两个范围或界限之间的回文和Armstrong级数。外部do-while循环正在将上限降低一,以便该循环可以在这两个指定数字之间起作用。内循环正在处理每个数字,以检查它是否是回文/阿姆斯特朗。