首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >产生最多的10个输入

产生最多的10个输入
EN

Stack Overflow用户
提问于 2016-11-03 00:50:52
回答 3查看 365关注 0票数 2

这里的脚本是新手。基本上,我需要编写一个程序来接受10个输入数字,并返回列表中最大的数字。

我有这段代码,但显然它没有运行:

代码语言:javascript
复制
class Generator

  def getNumbers
    number = Array.new

    puts "To begin, You will need to enter your numbers."
    print "Press Enter to continue."
    Console_Screen.pause

    10.times do
      print "\nPlease enter any number: "
      input = STDIN.gets
      input.chop!
      list.push
      return list 
    end

    list.push(number)
    print list.max
  end
end


Console_Screen.new
Find = Generator.new

end

有人能帮我把我的代码写错吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-03 01:12:53

您的代码有很多问题。其中,我可以指出:

1)创建了一个名为number的数组来存储数字,然后尝试将它们推送到另一个名为list的变量中;

2)正如@tadman所指出的,您在times块中使用了一个返回,这使得该块只能执行一次;

3)您从未调用过getNumbers来使您的过程真正发生!

这段代码可以满足您的需要:

代码语言:javascript
复制
class Generator

  def get_numbers
    numbers = Array.new

    puts "To begin, You will need to enter your numbers."
    puts

    10.times do
      print "\nPlease enter any number: "
      input = STDIN.gets
      input.chop!
      numbers.push(input.to_i)
    end

    print numbers.max
  end
end

Find = Generator.new
Find.get_numbers

注意,我将方法的名称从getNumbers更改为get_numbers,这更像Ruby。

请注意,我还将数组的名称从number更改为numbers,因为它将存储数字,而不是一个数字。正确命名变体可能有助于您正确思考问题。对于其他正在阅读程序的人来说,这也会有所帮助。即使是您,六个月后,如果您不能正确地命名代码注释,即使您自己的代码也会有问题。

顺便说一句,我还使用numbers将数字按为整数,使用#to_i。这将使数字被比较为数字,而不是字符串。如果你研究一下,你会发现这可能有点不同。如果有人将0300作为一个数字输入,它将被认为比200作为字符串小,但是当转换为整数时,它们将是正确的顺序。

票数 1
EN

Stack Overflow用户

发布于 2016-11-03 01:19:05

不妨考虑这一办法:

代码语言:javascript
复制
#script.rb
nums = []
10.times do |c|
  puts "enter number #{c+1}"
  nums << gets.to_i
end

puts "max number is #{nums.max}" 

示例

代码语言:javascript
复制
$ ruby script.rb
enter number 1
#5
enter number 2
#3
enter number 3
#66
enter number 4
#4
enter number 5
#3
enter number 6
#2
enter number 7
#1
enter number 8
#6
enter number 9
#9
enter number 10
#0  
#max number is 66
票数 1
EN

Stack Overflow用户

发布于 2017-04-01 23:27:28

我有同样的任务,这就是我最后创造的。(我不得不更多地参与到输入控制中,我相信有更简单的方法可以做到这一点。还必须利用这些变量作为年级的一部分。我认为这是为了防止我删除上面的代码。)

代码语言:javascript
复制
class Screen
  def cls
    puts ("\n" * 25)
    puts "\a" 
  end

  def pause
    STDIN.gets
  end    
end

Console_Screen = Screen.new

num = [] #array to store user input

$counter = 1
loop do

  puts "Please enter number " + $counter.to_s + " of a series of 10 numbers in order to determine the largest."
  # Console_Screen.pause
  loop do
    print "Enter Number Here:"
    number = gets.chomp       
    num << number.to_i if number =~ /[0-9]/ #only writes to the array if it's a number
    break if number =~ /[0-9]/ #only allow numbers
  end

  $counter += 1
  break if $counter == 11

end

puts "Press Enter to have your numbers sorted and the largest presented to you."

Console_Screen.pause   

largest = num.max
puts "This is your largest number: " + largest.to_s
Console_Screen.pause
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40392132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档