Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在同一行上打印循环结果,而不是在每次迭代中打印新行_Ruby - Fatal编程技术网

Ruby 在同一行上打印循环结果,而不是在每次迭代中打印新行

Ruby 在同一行上打印循环结果,而不是在每次迭代中打印新行,ruby,Ruby,我希望我的代码只在一行上打印dully,但它会这样打印: silly silly silly def read_string gets.chomp end 我想要这个: silly silly silly 这是我的代码: def print_silly_name () i = 0 while ( i < 60 ) puts "silly" i += 1 end end de

我希望我的代码只在一行上打印
dully
,但它会这样打印:

silly
silly
silly
def read_string
  gets.chomp
end
我想要这个:

silly silly silly 
这是我的代码:

    def print_silly_name ()
       i = 0
       while ( i < 60 )
         puts "silly"
         i += 1 
       end
    end

    def main
      name = read_string('Please enter your name: ')
      if ( name == "benyamin") or ( name == "jack" )
        puts  " #{name} that is a nice name"
      else 
        puts print_silly_name
      end
    end

    main
def打印名称()
i=0
而(i<60)
把“愚蠢的”
i+=1
结束
结束
def总管
name=读取字符串('请输入您的姓名:')
如果(姓名==“benyamin”)或(姓名==“jack”)
将“#{name}这是个好名字”
其他的
把你的名字打印出来
结束
结束
主要的

你的问题不是很清楚,但我想你不会是这样的:

def print_silly_name
  puts Array.new(60, 'silly').join(' ')
end

def main
  name = read_string('Please enter your name: ')
  if ( name == "benyamin") || ( name == "jack" )
    puts  " #{name} that is a nice name"
  else 
    print_silly_name
  end
end

main

用这个打印60次

def打印名称()
将“愚蠢”改为*60

结束

查看您的代码,您有一些问题:

  • 您在问题和标题中提到的主要问题是,在循环的每次迭代中,打印的名称都会出现在新行中。这是因为您使用的是
    put
    ,但在您的案例中应该使用
    print
    2.您正在调用代码中未定义的
    #read_string
    方法。您要做的是将其替换为
    get.chomp
    ,或者像这样定义
    #read_string
    方法:

    silly
    silly
    silly
    
    def read_string
      gets.chomp
    end
    
    3.正如Stefan所提到的,您使用的是
    ,这可能不是您在这里要找的()您最好使用
    |
    操作符

    修复这些错误将为我们带来代码的工作版本:

    def print_silly_name_60_times
      60.times do
        print "silly "
      end
    end
    
    def main
      name = gets.chomp
      if ( name == "benyamin") || ( name == "jack" )
        puts  " #{name} that is a nice name."
      else
        print_silly_name_60_times
      end
    end
    
    main
    
    在清理了一些东西并使其更加紧凑后,我们得到:

    def print_silly_name_60_times
      60.times{print "silly "}
    end
    
    def main
      name = gets.chomp
      %w(benyamin jack).include?(name) ? (puts  " #{name} that is a nice name.") : print_silly_name_60_times
    end
    
    main
    

    如果要使用
    打印
    ,而不是
    放置
    ,则应使用
    |
    而不是
    。后者是一个控制流操作符,可能不是您想要的。它甚至不打印任何内容。你只是在做一个字符串,我知道^^我适应了它的功能:
    put print\u stuly\u name