为什么我的程序不能找到我想打开的文本文件?
问题描述:
我正在为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
答
错误信息中的线索!
undefined method line
在while循环,你正在阅读从file
线通过gets
,然后将其存储在line
。此代码:
if(file.line.reverse == file.line)
因此不正确 - 您不需要file.
前缀! Ruby认为你试图调用file
对象的line
方法,但它没有。这就是为什么它给你的错误...
+0
等待不知道它现在可能工作 – 2012-04-25 23:52:38
你为什么认为这不是你的文件?你真的看过错误信息吗? – geekosaur 2012-04-25 23:35:59
基本上让我的问题更简单,我的文本文件应该放在我的机器上,以便netbeans可以运行此代码?我需要指定ruby1.txt的目录还是只需调用ruby1.txt? – 2012-04-25 23:43:32
它与文件的位置无关,请参阅我的答案... – andrewdotnich 2012-04-25 23:44:06