前提・実現したいこと
https://symfoware.blog.fc2.com/blog-entry-1029.html
というサイトに書かれているプログラムの実行が出来ないです。
色々とscalaに関して練習しているのですが、見たことないエラーなので教えてほしいです
scala2.12.1を使用しています。
研究室の関係上最新版を使用していません。
発生している問題・エラーメッセージ
java.lang.ArrayIndexOutOfBoundsException: 2
at Main$$anon$1.address_format(test.scala:9)
at Main$$anon$1.$anonfun$new$1(test.scala:25)
at Main$$anon$1.$anonfun$new$1$adapted(test.scala:25)
at scala.collection.Iterator.foreach(Iterator.scala:929)
at scala.collection.Iterator.foreach$(Iterator.scala:929)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1406)
at Main$$anon$1.<init>(test.scala:25)
at Main$.main(test.scala:1)
at Main.main(test.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at scala.reflect.internal.util.ScalaClassLoader.$anonfun$run$2(ScalaClassLoader.scala:98)
at scala.reflect.internal.util.ScalaClassLoader.asContext(ScalaClassLoader.scala:32)
at scala.reflect.internal.util.ScalaClassLoader.asContext$(ScalaClassLoader.scala:30)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:129)
at scala.reflect.internal.util.ScalaClassLoader.run(ScalaClassLoader.scala:98)
at scala.reflect.internal.util.ScalaClassLoader.run$(ScalaClassLoader.scala:90)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:129)
at scala.tools.nsc.CommonRunner.run(ObjectRunner.scala:22)
at scala.tools.nsc.CommonRunner.run$(ObjectRunner.scala:21)
at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:39)
at scala.tools.nsc.CommonRunner.runAndCatch(ObjectRunner.scala:29)
at scala.tools.nsc.CommonRunner.runAndCatch$(ObjectRunner.scala:28)
at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:39)
at scala.tools.nsc.ScriptRunner.runCompiled(ScriptRunner.scala:170)
at scala.tools.nsc.ScriptRunner.$anonfun$runScript$1(ScriptRunner.scala:187)
at scala.tools.nsc.ScriptRunner.$anonfun$runScript$1$adapted(ScriptRunner.scala:187)
at scala.tools.nsc.ScriptRunner.$anonfun$withCompiledScript$2(ScriptRunner.scala:156)
at scala.tools.nsc.ScriptRunner.runScript(ScriptRunner.scala:124)
at scala.tools.nsc.ScriptRunner.runScriptAndCatch(ScriptRunner.scala:200)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:63)
at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:88)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:99)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:104)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
該当のソースコード
//test.scalaの中身
import scala.io.Source
import java.io.PrintWriter
// 郵便番号と住所の列のみ抽出
def address_format(line : String, out : PrintWriter) = {
val list = line split ',' //文章を,で分ける
val zip = dropQuote(list(2))//郵便番号
val address = dropQuote(list(6)) + dropQuote(list(7)) + dropQuote(list(8))//住所
out.write("%s,%s\n" format (zip, address)) //住所と郵便番号を書き込む
}
def dropQuote(str : String) : String = {// 前後のダブルクォーテーションを除去
str drop 1 dropRight 1
}
val source = Source.fromFile("C:\Users\xxx\Documents\scala\s.txt", "utf8")// 入力ファイル
val out = new PrintWriter("C:\Users\xxx\Documents\scala\t.txt", "utf8")// 出力ファイル
val lines = source.getLines// ファイルを読み込んでループ
lines.foreach(line => address_format(line, out))
source.close
out.close
s.txtの中身
01101,"060 ","0600000","ホッカイドウ","サッポロシチュウオウク","イカニケイサイガナイバアイ","北海道","札幌市中央区","以下に掲載がない場合",0,0,0,0,0,0
01101,"064 ","0640941","ホッカイドウ","サッポロシチュウオウク","アサヒガオカ","北海道","札幌市中央区","旭ケ丘",0,0,1,0,0,0
01101,"060 ","0600041","ホッカイドウ","サッポロシチュウオウク","オオドオリヒガシ","北海道","札幌市中央区","大通東",0,0,1,0,0,0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。