質問編集履歴

1

ラムダ式の外で定義した変数を書き換えることはできないとのことなので、変数の定義をラムダ式の中に変えました。

2022/01/17 23:52

投稿

K.M.PEANUTS
K.M.PEANUTS

スコア40

test CHANGED
File without changes
test CHANGED
@@ -29,20 +29,19 @@
29
29
  Button executeButton = new Button("実行");
30
30
 
31
31
  // 後置記法出力
32
- Label postfixOut = new Label();
32
+
33
- String str = ""; //中置記法の式を代入
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
123
  後置記法を出力部分のtranslateButton.addClickListener(e -> { }の中身の変数str,Node,str2,data2等で、『ラムダ式から参照されるローカル変数は、finalまたは事実上のfinalである必要があります』というエラーが出ます。どのように変更すれば良いか教えてください。
124
+
125
+ ### 問題点②
126
+ 問題点①を踏まえて、変数の定義を全てラムダ式の中にしました。すると今度はstr2,data2,postfixOutのみが『シンボルを見つけられません』というエラーになります。