【发布时间】:2014-07-12 08:59:43
【问题描述】:
我正在使用基于 Chris Pine 的 Ruby 教程的实例变量进行编程:Link
作业是:
创建一个 OrangeTree 类。它应该有一个高度方法 返回其高度和 oneYearPasses 方法,当调用该方法时, 树龄一年。树每年都长得更高(无论多高 你认为一棵橘子树应该在一年内长出来),然后经过一段时间 几年(再次,你的电话)树应该死。对于前几个 几年,它不应该结出果实,但过一段时间它应该结出果实,而我 猜猜老树每年比年轻树产生更多... 任何你认为最有意义的东西。而且,当然,你应该 能够 countTheOranges (返回橙子的数量 树)和pickAnOrange(将@orangeCount 减一并且 返回一个字符串,告诉你橙子有多好吃,否则 只是告诉你今年没有更多的橙子可以采摘了)。制作 确保你一年没有摘的任何橙子在下一年之前脱落 年。
这是我的程序:
class OrangeTree
def initialize
@tree = "orange tree"
@age = 0
@height = 0
@fruit = 0
@fruitPicked = 0
puts "your " + @tree + " is budding"
end
def age
puts "your " + @tree + " is #{@age} years old."
@age = @age
oneYearPasses
end
def height
puts "your " + @tree + " is growing taller."
@height = @height
end
def fruit
puts "your " + @tree + " has #{@fruit} oranges."
@fruit = @fruit
end
def pickOrange
puts "pick how many oranges?"
@fruitPicked = @fruitPicked + gets.chomp.to_i
puts "you picked #{@fruitPicked} oranges."
@fruit = @fruit - @fruitPicked
end
def oneYearPasses
#increase age by 1 each year
#at the end of each year, all fruits fall off
if @age >= 0
@age = @age + 1
@fruit = @fruit - @fruit
end
#tree keeps growing until it reaches a peak of 20 inches
if @height >= 0 and @height < 20
@height = @height + 1
else
puts "your " + @tree + " is no longer growing taller."
end
#tree starts producing fruit at age 3, each year it will be able to
#produce more fruit then subsequent years by multiples of 2
if @age >= 3
@fruit = @fruit + (@age * 2)
end
#the amount of fruit that is picked
if @age >= 3
@fruitPicked = @fruitPicked + @fruitPicked
end
if age > 20 and @fruit = 0
puts "your tree died"
end
end
end
orange = OrangeTree.new
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.age
orange.fruit
orange.pickOrange
orange.fruit
orange.age
orange.age
orange.fruit
orange.pickOrange
我有两个问题:
1)为什么年龄> 20且果实= 0时,橘子树不死?
2)调用我的最后一行orange.pickOrange,我输入2,但我的程序告诉我我选择了20个橙子。这是为什么呢?
谢谢。
【问题讨论】:
-
不是你的问题的原因,但你应该(1)不要混合字符串连接和字符串插值,使用后者:
puts "your #{@tree} has #{@fruit} oranges.",(2)使用蛇大小写而不是骆驼大小写方法名称,例如pick_orange, (3) 缩进 2 个空格
标签: ruby class methods instance-variables