【问题标题】:Way is my code showing the output before getting all inputs?我的代码是在获取所有输入之前显示输出吗?
【发布时间】:2014-06-11 17:18:12
【问题描述】:

我正在创建一个程序,询问所需的输入数量,然后对这些输入进行冒泡排序。 我的代码:

def bubble_sort(list)
       sl = list.clone
       sl.each_index do |i|
         ( sl.length - i - 1 ).times do |j|
             if ( sl[j+1] < sl[j] )
                 sl[j], sl[j+1] = sl[j+1], sl[j]
             end
         end
       end
end
puts "Enter Number of Elements"
n = gets.chomp 
puts "Enter #{n} elements" 
n.to_i.times do 
(list ||= []) << gets.chomp
bubble_sort(list)
p ('Sorted elements:')
p (list)
end 

我已经测试了冒泡循环,它工作正常。我遇到的问题是输出,程序要求在新行中输入每个输入,但是每当我输入任何输入时,它都会立即显示输出并且它不会等待输入其他元素。有人可以帮我解决如何解决我的问题,以使程序保持输出直到它完成所有输入吗?

【问题讨论】:

    标签: ruby bubble-sort


    【解决方案1】:

    您将p(list)(以及bubble_sort(list) 和大量其他内容)放入元素收集循环中。如果您不希望它们作为循环的一部分完成,则应将它们放在外面。

    【讨论】:

      【解决方案2】:

      因为您告诉您的机器这样做。试试:

      list = []
      n.to_i.times do 
        list << gets.chomp
      end
      
      bubble_sort(list)
      p ('Sorted elements:')
      p (list)
      

      代替:

      n.to_i.times do 
        (list ||= []) << gets.chomp
        bubble_sort(list)
        p ('Sorted elements:')
        p (list)
      end  
      

      【讨论】:

      • @user3467152 - 只需使用puts 而不是p
      猜你喜欢
      • 2013-08-20
      • 2021-02-26
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 2018-12-28
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多