我有两个问题让用户输入相同的值。例如:
Q1 - enter value
Q2 - re-enter value
如果用户输入NIL值,则应再次提示“Q1”,这在我的代码中正常工作。但是用户输入NIL为“Q2”然后再次“Q1”需要提示,然后是“Q2”。但在我的代码“Q2”再次提示。有人可以帮助我解决这里的逻辑。
这是我的代码:
def getPrompt(input)
p1 = ""
p2 = ""
while 1
puts "Entered getInput"
while "#{p1}" == ""
p1 = ask("Enter #{input}: ") do |ch|
ch.echo = true
end
if "#{p1}" == ""
print "#{ch} cannot be empty string.\n".red
end
end
while "#{p2}" == ""
p2 = ask("Re-enter #{p1}: ") do |ch|
ch.readline = true
end
if "#{p2}" == ""
print "#{p1} cannot be empty string.\n".red
end
end
if "#{p1}".casecmp("#{p2}") == 0
break
else
print "#{val} mis-match\n".red
end
end
return "#{p1}"
end
答案 0 :(得分:0)
执行此操作的一种方法是将第二个循环放在第一个循环中。
但你真的不需要所有这些循环。您的代码还存在其他问题,例如,您不需要通过p1
将"#{p1}"
插入字符串,它已经是一个字符串。
然而,第一个解决方案可能是这样的:
def getPrompt(input)
p1 = ""
p2 = ""
while p1 == "" or p1 != p2
p1 = ask("Enter #{input}: ")
if p1 == ""
puts "#{input} cannot be empty string."
else
p2 = ask("Re-enter #{input}: ")
if p2 == ""
puts "#{input} cannot be empty string."
elsif p1 != p2
puts "mis-match"
end
end
end
return p1
end
希望这有帮助