我使用基于Chris Pine的Ruby教程的实例变量编程:Link
作业是:
制作OrangeTree课程。它应该有一个高度方法 返回它的高度,以及一个oneYearPasses方法,当被调用时, 树木年龄一年。每年树长得更高(无论多少 你认为一棵橙树应该在一年内生长,并在一些数字之后 多年(再次,你的电话)树应该死。对于前几个 多年来,它不应该产生水果,但过了一段时间它应该和我一起 猜测老树每年生产的树比年轻树更多...... 无论你认为什么都有意义。而且,当然,你应该是 能够countTheOranges(返回橙色的数量) tree)和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)当年龄> 1时,为什么橘子树不会死亡? 20和水果= 0?
2)调用我的最后一行orange.pickOrange,我输入2,但我的程序告诉我我挑了20个橙子。这是为什么?
感谢。
答案 0 :(得分:1)
回答Q1
使用 == 进行比较,而不是 =
并使用@age,这是在课程中使用的实例变量而不是年龄
if age > 20 and @fruit = 0 should be
if @age > 20 and @fruit == 0 within method **oneYearPasses**
也许, 20岁以后,水果数量不会为零,它会超过它,所以你应该改变水果的条件
回答Q2
将代码修改为
@age > 20 and @fruit == 0
我尝试了这个程序,我输入2,程序说,“你选了2个橙子。”
由于