
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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
COLUMN(1:1)の意味を教え...
-
VB 配列の内容をファイルに書...
-
vbsでテキストファイル内の文字...
-
excelの、ある数式内の{}の意...
-
数値を浮動小数点32bitHEXコー...
-
配列の値を置換するにはどうす...
-
VB6で配列を文字列に変換する方...
-
Excel-vba 文字列と変数を...
-
Xorshiftの値を絞り込む方法を...
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
Access2003 オートナンバーの現...
-
jsp~jspにhiddenを使って変数...
-
EXCEL/VBA 変数の値をクリップ...
-
フォームを開くときに、コンボ...
-
VB6.0-整数と余りを求める
-
ラジオボタンの値の取得につい...
-
フリーランタイマーの時間差分...
-
平均、最大値、最小値を表示す...
-
バッチファイルで正規表現を使...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の値を置換するにはどうす...
-
excelの、ある数式内の{}の意...
-
COLUMN(1:1)の意味を教え...
-
VBAのWorksheetFunctionの引数...
-
エクセル、この関数の意味は?
-
RichTextBoxの改行を認知してく...
-
vbsでテキストファイル内の文字...
-
○桁にある数値を取得する VB.N...
-
複数ディレクトリの監視(VB.NET...
-
エクセルへのデータの貼付時に...
-
数値を浮動小数点32bitHEXコー...
-
VBSで特定の文字列が含まれる場...
-
【エクセル】 関数による電子...
-
VB 配列の内容をファイルに書...
-
小数点の表示。
-
VBAで配列に文字列が入らない?
-
in_addrからchar型の文字列の変換
-
配列の座標指定について。
-
ループを違う条件で抜けるよう...
-
初心者プログラミング
おすすめ情報