这里是脚本新手。基本上,我需要编写一个程序来接受10个输入数字并返回列表中最大的数字。
我有这段代码,但显然它没有运行:
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
任何人都可以帮我解释我编码不正确的内容吗?
答案 0 :(得分:1)
您的代码存在许多问题。其中我可能会指出:
1)您创建了一个名为number
的数组来存储您的数字,然后尝试将它们推送到另一个名为list
的变量;
2)正如@tadman指出的那样,你在times
块中使用了一个返回值,这使得块只执行一次;
3)你从未调用过getNumbers来让你的过程真正发生!
此代码可以满足您的需求:
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 :(得分:1)
或许考虑这种方法:
#script.rb
nums = []
10.times do |c|
puts "enter number #{c+1}"
nums << gets.to_i
end
puts "max number is #{nums.max}"
$ 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
答案 2 :(得分:0)
我有相同的任务,这是我最终创建的。 (我必须更多地参与输入控制,我确信有更简单的方法可以做到这一点。还必须利用变量作为等级的一部分。我假设阻止我扯掉上面的代码。)< / p>
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