-3

Ruby で CS の割り当て用にこのコードを書いています。私はRubyを始めたばかりなので、それについてはよくわかりませんが、このコードから次のようなメソッドなしエラーが発生し続けます:

V:\CS 300 RubyAssignment\lib\rubyAssignment.rb:13:in `categorize': undefined method `line' for #<File:ruby1.txt (closed)> (NoMethodError)
    from V:\CS 300 RubyAssignment\lib\rubyAssignment.rb:11:in `open'
    from V:\CS 300 RubyAssignment\lib\rubyAssignment.rb:11:in `categorize'
    from V:\CS 300 RubyAssignment\lib\rubyAssignment.rb:30

コードは以下のとおりですが、テキスト ファイルが間違った場所にあるように感じます。NetBeans Ruby プラグインを使用していますが、テキスト ファイルをプロジェクトのソース ファイル フォルダー、テスト ファイル フォルダー、または netbeans のライブラリ フォルダーに配置する必要があるかどうかわかりません。それはそれと同じくらい簡単かもしれません。

# This program reads a file line by line,
# separating lines by writing into certain text files.
# PPQ - Pangrams, Palindromes, and Quotes

class PPQ
  def categorize
    file_pangram = File.new('pangram.txt', 'w')
    file_palindrome = File.new('palindrome.txt', 'w')
    file_quotes = File.new('quotes.txt','w')

    File.open('ruby1.txt','r') do |file|
      while line = file.gets
        if(file.line.reverse == file.line)
          file_palindrome.write line
          if(file.line.contains('a'&&'b'&&'c'&&'d'&&'e'&&'f'&&'g'&&'h'&&'i'&&'j'&&'k'&&'l'&&'m'&&'n'&&'o'&&'p'&&'q'&&'r'&&'s'&&'t'&&'u'&&'v'&&'w'&&'x'&&'y'&&'z'))
            file_pangram.write "file.line"
          else
            file_quotes.write "file.line"
          end
        end
      end
      file.close
      file_pangram.close
      file_palindrome.close
      file_quotes.close
    end
  end
end
my_ruby_assignment = PPQ.new
my_ruby_assignment.categorize
4

1 に答える 1

1

エラーメッセージに手がかりがあります!

undefined method line

whileループでは、fileviaから行を読み取りgets、それをに格納しlineます。このコード:

if(file.line.reverse == file.line)

file.したがって、正しくありません。プレフィックスは必要ありません。lineRubyは、オブジェクトのメソッドを呼び出そうとしていると見なしますが、fileオブジェクトにはありません。そのため、エラーが発生します…</ p>

于 2012-04-25T23:43:41.367 に答える