基本问题 Ruby;为什么总变量在循环中没有更新

发布于 2025-01-11 20:44:35 字数 255 浏览 0 评论 0原文

这段代码应该更新循环内的总数,但是当我在损坏时放置总数时,它不会更新。

total = 0

while true do
  
  puts "Give me a number"
  input = gets.chomp
  
  if input == Integer
    total += input
         
  elsif input == "stop"
    puts total
    break
  end
end

This code is supposed to update the total within the loop, but when I put the total when its broken it doesn't update.

total = 0

while true do
  
  puts "Give me a number"
  input = gets.chomp
  
  if input == Integer
    total += input
         
  elsif input == "stop"
    puts total
    break
  end
end

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

仲春光 2025-01-18 20:44:35

input = gets.chomp 将生成 String 类。因此,您的逻辑 if input == Integer 永远不会达到。你需要使用to_iinput == Integer将其转换为整数我从来没有使用过这种语法来检查类,我宁愿使用input.is_a? (字符串)。但如果您首先转换为整数,它将永远不会检查 stop 字符串条件。所以也许

total = 0

while true do
  
  puts "Give me a number"
  input = gets.chomp

  if input == "stop"
   puts total
   break
  end

  total += input.to_i
end

input = gets.chomp will result String class. So your logic on if input == Integer it will never be reached. you need to convert it to integer using to_i and input == Integer i never used that kind of syntax to check the classes, i rather use input.is_a?(String). but if you convert to integer first it will never check stop string condition. so maybe

total = 0

while true do
  
  puts "Give me a number"
  input = gets.chomp

  if input == "stop"
   puts total
   break
  end

  total += input.to_i
end
戏蝶舞 2025-01-18 20:44:35

正如 mu 太短 和 dedypuji 的回答中提到的,您有几个问题。这是我认为可行的另一种变体,并且我认为它更符合 ruby​​ 习惯。

total = 0
loop do
  print "Give me a number: "
  input = gets
  break if /stop|^$/ =~ input
  total += input.to_i 
 end
 puts total 

As mentioned in the above comment by mu is too short and dedypuji's answer you have a couple of issue. Here is another variation that I think will work and I think is a little more ruby idiomatic.

total = 0
loop do
  print "Give me a number: "
  input = gets
  break if /stop|^$/ =~ input
  total += input.to_i 
 end
 puts total 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文