質問編集履歴
1
ラムダ式の外で定義した変数を書き換えることはできないとのことなので、変数の定義をラムダ式の中に変えました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -29,20 +29,19 @@
|
|
29
29
|
Button executeButton = new Button("実行");
|
30
30
|
|
31
31
|
// 後置記法出力
|
32
|
-
|
32
|
+
|
33
|
-
|
33
|
+
|
34
|
-
String str2 = "";
|
35
|
-
String[] data2 = null;
|
36
34
|
translateButton.addClickListener(e -> {
|
37
|
-
str = infixExpr.getValue(); //strに中置記法の式を代入
|
35
|
+
String str = infixExpr.getValue(); //strに中置記法の式を代入
|
38
36
|
Node tree = new Node(str);
|
39
37
|
|
40
|
-
//二分木に格納する
|
38
|
+
//二分木に格納する
|
41
39
|
tree.parse();
|
42
40
|
|
43
|
-
str2 = tree.getExpression(""); //str2に後置記法の式を代入
|
41
|
+
String str2 = tree.getExpression(""); //str2に後置記法の式を代入
|
42
|
+
Label postfixOut = new Label();
|
44
43
|
postfixOut.setText(str2);
|
45
|
-
data2 = str2.split(","); //カンマ区切りでdata2に格納する
|
44
|
+
String[] data2 = str2.split(","); //カンマ区切りでdata2に格納する
|
46
45
|
|
47
46
|
|
48
47
|
});
|
@@ -118,6 +117,10 @@
|
|
118
117
|
}
|
119
118
|
}
|
120
119
|
|
120
|
+
|
121
121
|
```
|
122
|
-
### 問題点
|
122
|
+
### 問題点①(解決済み??)
|
123
|
-
後置記法を出力部分のtranslateButton.addClickListener(e -> { }の中身の変数str,Node,str2,data2等で、『ラムダ式から参照されるローカル変数は、finalまたは事実上のfinalである必要があります』というエラーが出ます。どのように変更すれば良いか教えてください。
|
123
|
+
後置記法を出力部分のtranslateButton.addClickListener(e -> { }の中身の変数str,Node,str2,data2等で、『ラムダ式から参照されるローカル変数は、finalまたは事実上のfinalである必要があります』というエラーが出ます。どのように変更すれば良いか教えてください。
|
124
|
+
|
125
|
+
### 問題点②
|
126
|
+
問題点①を踏まえて、変数の定義を全てラムダ式の中にしました。すると今度はstr2,data2,postfixOutのみが『シンボルを見つけられません』というエラーになります。
|