簡體   English   中英

NoMethodError在Ruby中使用gets.chomp

[英]NoMethodError using gets.chomp in Ruby

有人可以通過這個簡單的練習幫助我嗎?

class Item
  def percents()
    self * 100
  end
end

answer = gets.chomp
puts answer.percents()

結果是:

percents.rb:7:in `<main>': undefined method `percents' for "300":String (NoMethodError)

變量answer必須是Item對象才能具有percents方法。 或者,您可以從Item類中刪除percents方法,並使其采用整數:

def percents(int)
   int * 100
end

answer = gets.chomp
puts percents(answer)

但是,這最后一行不會像您期望的那樣幫助您。 由於gets.chomp返回輸入的字符串,因此您將字符串 “ 300”乘以100,這意味着您的輸出將如下所示:

2.2.2 :026 > puts percents(answer)
300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300300
 => nil

您可以先使用to_i將答案轉換為整數,然后打印百分比

2.2.2 :027 > puts percents(answer.to_i)
30000
 => nil

在那里,看起來更好。 現在,如果您想將answer作為Item類的對象,那將更加棘手。

class Item
  def initialize(answer)
    @answer = answer
  end

  def percents
    @answer * 100
  end
end

item = Item.new(gets.chomp.to_i)
puts item.percents

您的輸出將與上面相同:

2.2.2 :049 > puts item.percents
30000
 => nil

如果您還有其他問題,請告訴我,因為我不確定100%是否要編寫程序。 我建議您在學習Ruby時閱讀一些Ruby教程,例如《 二十分鍾的Ruby》Tutorial Point的ruby教程 我希望這有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM