forループのwhileループを実行しています。配列の長さは9です。プログラムの長さを2倍にチェックしました。 forループは、配列内の各要素に対して実行する必要がありますが、代わりに最初の要素に対してのみ実行され、終了します。一方、whileループは配列の長さも使用し、期待通りに動作します。さまざまな 'puts'ステートメントは、コードを実行するときにこれを示します。 forループが9回実行されないのはなぜですか?forループは、長さが9の配列にもかかわらず、1回だけ実行されます。
def stock_picker(stock_prices)
differences = Array.new
stock_prices.each do |price|
day = 0
puts "The for loop is starting"
while day < stock_prices.length
puts "The while loop is working"
puts price
if price < stock_prices[day]
puts "The if statement is working"
difference = stock_prices[day] - price
puts difference
differences.push(difference)
puts differences
end
day += 1
end
puts "The for loop is ending"
end
puts differences
end
実際のデータについて何も知らずに、意味のある入力を行うことは難しいです。一般的に、whileループはうまく動作します。 1つの場所でwhileループを使用する理由と、別の場所で「each」を使用する理由は明確ではありませんが。 –
あなたの質問は不完全です。サポートについてはhttps://stackoverflow.com/help/mcveを参照してください。 –
'[17、3、6、9、15、8、6、1、10]'は私が使用している配列で、唯一のデータです。私はこの最後の夜遅くまで働いていたので、もう一度見てみると、私はなぜ2つの異なる種類のループを使用したのか100%確信していませんが、 'if '比較とは何かがあると思います。私は 'forループ'を別の 'whileループ'に切り替えることを試みるかもしれません。 –