首页 > 解决方案 > 'if' 语句在'for' 循环中不起作用

问题描述

我需要找出一个整数数组是否包含一个或多个元素,这些元素将数组分成两部分,使得左右部分的元素之和相等。

我试过这个:

arr = [1,2,3,4,3,2,1]

left_sum = 0
right_sum = arr.inject(0) { |sum, x| sum = sum + x } 

for i in 0..arr.length-1
  counter = []
  right_sum = right_sum - arr[i]

  case i
    when 0
    left_sum = 0          
  else
    left_sum = left_sum + arr[i-1]
  end

  puts "Left sum of element #" + i.to_s + "=" + left_sum.to_s
  puts "Right sum of element #" + i.to_s + "=" + right_sum.to_s
  puts " "

  if right_sum - arr[i] == left_sum + arr[i-1]
    puts "Left sum" + "=" + "Right sum"
    counter.push(i)
  end

  puts counter.to_s

end

我遇到了一个错误。我不明白为什么- 语句在-loopif中不起作用。for我做错了什么?

标签: rubyif-statement

解决方案


在 ruby​​ 中使用不是一个好主意for,您可以each在 Ruby 中使用 for 循环。

arr.each { |i|
   ...
}

此外,您需要在询问是否相等之前已经计算出总和。

right_aux = right_sum - arr[i]
left_aux = left_sum + arr[i-1]
if right_aux == left_aux
  puts "Left sum" + "=" + "Right sum"
  counter.push(i)
end 

推荐阅读