質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Q&A

1回答

1409閲覧

(~.get)で得られる文字を別の場所で使いたい

scalabiginner

総合スコア7

Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

0グッド

1クリップ

投稿2020/02/10 05:12

前提・実現したいこと

(map.get("P").get)の後ろの.getで得られる文字を別の場所で使いたいのですが、方法が分かりません。
現在、aという変数を用いてもう一度使おうと試みましたがうまくいきません。

発生している問題・エラーメッセージ

C:\Users\xxx\Documents\scala\new.scala:17: error: '=' expected but ';' found.
a(map.get("P").get)
^
one error found

該当のソースコード

import scala.util.parsing.json.JSON;
import scala.util.parsing.json.{JSONObject, JSONArray, JSONType}; // added for not found error
import scala.io.Source

object Main extends App {
var source = Source.fromFile("C:\Users\xxx\Documents\scala\inpu1t.json","utf8")//sourcefile
println("A")//確認用
var lines =(" "):String
source.getLines.foreach{
line=>lines += line+"\n" //ソースコードの中身の表示
}
println("b")//確認用
val result : Option[JSONType] = JSON.parseRaw(lines)
val jo : JSONObject = result.get.asInstanceOf[JSONObject]
val map : Map[String,String] = jo.obj.asInstanceOf[Map[String, String]]
val a
a(map.get("P").get) //println(map.get("P").get)なら動く
println (map.get("W_^(L),W_^(R)").get)
println(lines)
println (map.get("W^↓").get)
source.close()
}

補足情報

//inpu1t.json の中身
{
"V":["W^↓"],
"V_c":["W_^(L)","W_^(R)"],
"Vda":["W^↓"],
"T":["0","1"],
"T_c":["0_","1_"],
"P":["W^↓","W_^(L),W_^(R)"],
"W^↓":"W_^(L) ,W_^(R)",
"W_^(L),W_^(R)":["0 W_^(L),1 W_^(R)","1 W_^(L),0 W_^(R)","0,1","1,0"],
"S":"W^↓"
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

動かして確認したわけではないですが、val a が初期化されていません。

Scala

1val a 2a(map.get("P").get)

のところは、

Scala

1val a = map.get("P").get

ではありませんか?

投稿2020/02/10 07:30

rysh

総合スコア874

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

scalabiginner

2020/02/10 07:53 編集

訂正します。仰る形に変えてみると以下のようなエラーがかえって来ました a bが出力されているので、途中から読み込めないようです。 a b java.lang.ClassCastException: scala.util.parsing.json.JSONArray cannot be cast to java.lang.String at Main$.delayedEndpoint$Main$1(new.scala:16) at Main$delayedInit$body.apply(new.scala:5) at scala.Function0.apply$mcV$sp(Function0.scala:34) at scala.Function0.apply$mcV$sp$(Function0.scala:34) at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) at scala.App.$anonfun$main$1$adapted(App.scala:76) at scala.collection.immutable.List.foreach(List.scala:378) at scala.App.main(App.scala:76) at scala.App.main$(App.scala:74) at Main$.main(new.scala:5) at Main.main(new.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)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問