No.2ベストアンサー
- 回答日時:
エラーの理由はちゃんとメッセージに書いてありますよ。
can't convert nil into String
nilをString(文字列)に変換できない
よって、どちらかがnilということで
・array1[m]が文字列ではない
・array2[n]が文字列ではない
に該当します。具体的には
・termがnil
・dic_trans_noun[n]がnil
のどちらか、あるいは両方です。
さらに、 a+b は a.+(b)であること、nilには+メソッドが定義されていないことから、「nil+文字列」ではNoMethodErrorになります。
TypeErrorにはなっている、ということは、「文字列+nil」なので
・dic_trans_noun[n]がnil
が原因です。
dic_trans_noun[n]がnil、ということは次の2通りが考えられます
・実際にdic_trans_nounのn要素にnilが代入されている
・nがdic_trans_nounの範囲外になっている
dic_trans_nounについての記述がここには無いので、どちらの理由かは不明です。
対処法ですが
・nilの場合は別の処理をする
・nilにならないようにdic_trans_noun、またはnを調整する
となります。どちらがこのプログラムに求められる仕様なのかは、現在の情報だけでは。私には判断できません。
ありがとうございます。
nilのときは別の処理をするようにしました。
型変換みたいなものが必要かと思っていたのですが、
一部の要素だけが問題だったんですね。
No.1
- 回答日時:
具体的なエラーメッセージは何でしょう?
通常なら、それで問題なく文字列の結合ができます。
・array1が配列ではない
・array2が配列ではない
・mがarray1の範囲外
・nがarray2の範囲外
・array1[m]が文字列ではない
・array2[n]が文字列ではない
あたりが予想できますが、エラーメッセージを読まなければ、どれに該当するか(または、別の要因なのか)、わかりません。
この回答への補足
回答ありがとうございます。
次のようなプログラムになっています。
1 ###
2 out_find_term = Array.new
3
4 sentence_array.each{|sentence|
5 out_find_term.push ""
6 out_find_term.push "###" + sentence
7
8 n = 0
9 dic_term_noun.each{|term|
10 if /\b#{term}/ =~ sentence then
11 out_find_term.push term #辞書にあれば配列に入れる
12 out_find_term.push dic_trans_noun[n]
13 out_find_term.push "\n"
14
15 end
16 n = n + 1
17 }
18
この11行と12行を
a = term + dic_trans_noun[n]
out_find_term.push a に変えたのですが
うまくいきません。
(out_find_termを出力したときに、1行になるように結合させたいのです)
エラーメッセージは「in `+': can't convert nil into String (TypeError)」です。
out_find_term.push(term + dic_trans_noun[n])に変えても同じです。
(補足、遅くなってすみません)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列の値を置換するにはどうす...
-
excelの、ある数式内の{}の意...
-
エクセルへのデータの貼付時に...
-
エクセル、この関数の意味は?
-
vbsでテキストファイル内の文字...
-
VB6で配列を文字列に変換する方...
-
VBSで特定の文字列が含まれる場...
-
VBSで配列の結果内容から任意の...
-
VBAのWorksheetFunctionの引数...
-
MATLABで配列をファイルへ書き...
-
数値を浮動小数点32bitHEXコー...
-
VB.NET 2つの配列を連動して並...
-
Rubyで配列を使ったfor文の中に...
-
列数の多いエクセルのデータを...
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
Windows Media Playerで動画を...
-
DataGridView 複数行同時変更...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の値を置換するにはどうす...
-
vbsでテキストファイル内の文字...
-
エクセルへのデータの貼付時に...
-
COLUMN(1:1)の意味を教え...
-
excelの、ある数式内の{}の意...
-
VB6で配列を文字列に変換する方...
-
数値を浮動小数点32bitHEXコー...
-
VBAのWorksheetFunctionの引数...
-
【エクセル】 関数による電子...
-
VBSで特定の文字列が含まれる場...
-
エクセル、この関数の意味は?
-
○桁にある数値を取得する VB.N...
-
RichTextBoxの改行を認知してく...
-
VB.NET 2つの配列を連動して並...
-
VBAで配列に文字列が入らない?
-
copyRecordsetの数値16桁以上に...
-
VB 配列の内容をファイルに書...
-
ruby 1.8.7 で、多次元配列をソ...
-
VB.NET 2次元配列
-
列数の多いエクセルのデータを...
おすすめ情報