我的代码存在问题,而且似乎无法弄清楚我需要更改什么。这里是我的三个文件,底部是我得到的错误。我有18次完全相同的代码,其中一半给了我这个错误。单元测试错误undefined方法`等级'为1:Fixnum
初始化等级,花色和符号
def initialize(the_rank, the_suit)
@rank = the_rank
@suit = the_suit
@symbols = [nil, nil, '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
end
新文件Pokerhand.rb: 要求 “./Constants” 要求 “./Card” 要求 “./Deck” 要求”。/CardSpaceship”
class PokerHand < Deck
include Constants
attr_reader :hand_type
def initialize(the_cards)
@cards = [ ]
@hand_type = UNCLASSIFIED
for card in the_cards
@cards << card
end
end
# Straight
elsif @cards[0].rank == @cards[1]+1.rank &&
@cards[1].rank == @cards[2]+1.rank &&
@cards[2].rank == @cards[3]+1.rank &&
@cards[3].rank == @cards[4]+1.rank
@hand_type = STRAIGHT
end
end
新文件test2.rb:
class PokerHand < Deck
include Constants
attr_reader :hand_type
def initialize(the_cards)
@cards = [ ]
@hand_type = UNCLASSIFIED
for card in the_cards
@cards << card
end
end
# Determine hand type of PokerHand object.
def classify
@cards.sort!
# Straight
def test_7
arr7 = [Card.new(2, "C"), Card.new(3, "S"),
Card.new(4, "H"), Card.new(5, "D"),
Card.new(6, "S")]
ph7 = PokerHand.new(arr7)
ph7.classify
assert_equal STRAIGHT , ph7.hand_type
end
收到错误:
TestClass#test_7:
NoMethodError: undefined method `rank' for 1:Fixnum
PokerHand.rb:79:in `classify'
test2.rb:76:in `test_7'
在许多系统中,卡被表示为'2D','3C',...'TH','AS',其中'T'代表10以使它们始终保持两个字母串。 – tadman
你也可以像这样测试一个同花顺:'@ cards.map(&:suit).uniq.length == 1'这意味着它们都有相同的花色。对于顺序卡,你应该在'rank'上排序。这里的“同花顺”代码的唯一方法是如果你有五张完全相同的卡片。 – tadman
我修复了我的代码,其中1/3是正确的,但是其他错误发生的错误 – Julian