Ошибка компиляции - Java

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. import javafx.application.*;
  2. import javafx.scene.*;
  3. import javafx.stage.*;
  4. import javafx.scene.layout.*;
  5. import javafx.scene.control.*;
  6. import javafx.geometry.*;
  7. import javafx.event.*;
  8. import java.io.*;
  9. import java.util.*;
  10. import javafx.scene.text.*;
  11. class MyDictionary {
  12. private static final String FILENAME = "Dictionary.txt";
  13. private static final String FILEPATH = "E:\\NetBeansProjects\\Dictionary";
  14. private File file;
  15. private FileReader file_reader;
  16. private FileWriter file_writer;
  17. private BufferedReader buffered_reader;
  18. private BufferedWriter buffered_writer;
  19. MyDictionary() {
  20. file = new File(FILEPATH, FILENAME);
  21. }
  22. public void AddWord(String word, String translate) {
  23. try {
  24. file_writer = new FileWriter(file, true);
  25. file_writer.write(word + "\t" + translate + "\r\n");
  26. file_writer.close();
  27. } catch(IOException e) {System.out.println("Error");}
  28. }
  29. public void DeleteWord(String word) {
  30. try {
  31. file_reader = new FileReader(file);
  32. buffered_reader = new BufferedReader(file_reader);
  33. Vector<String> vector_string = new Vector<String>();
  34. String string;
  35. while((string = buffered_reader.readLine()) != null) {
  36. if(string.contains(word)) {
  37. continue;
  38. }
  39. vector_string.add(string);
  40. }
  41. buffered_reader.close();
  42. file_writer = new FileWriter(file);
  43. for(int i = 0; i < vector_string.size(); i++) {
  44. file_writer.write(vector_string.get(i) + "\r\n");
  45. }
  46. file_writer.close();
  47. } catch(IOException e) {System.out.println("Error");}
  48. }
  49. public Vector<String> getWords() {
  50. Vector<String> vector_string = new Vector<String>();
  51. try {
  52. file_reader = new FileReader(file);
  53. buffered_reader = new BufferedReader(file_reader);
  54. String string;
  55. while((string = buffered_reader.readLine()) != null && vector_string.add(string));
  56. buffered_reader.close();
  57. } catch(IOException e) {System.out.println("Error");}
  58. return vector_string;
  59. }
  60. public void ClearDic() {
  61. try {
  62. file_writer = new FileWriter(file);
  63. file_writer.close();
  64. } catch(IOException e) {System.out.println("Error");}
  65. }
  66. }
  67. public class Dictionary extends Application {
  68. public static void main(String[] args) {launch(args);}
  69. public void start(Stage stage) {
  70. MyDictionary dic = new MyDictionary();
  71. stage.setTitle("Dictionary");
  72. GridPane grid = new GridPane();
  73. grid.setHgap(10);
  74. grid.setVgap(10);
  75. Scene scene = new Scene(grid, 400, 200);
  76. stage.setScene(scene);
  77. MenuBar menu_bar = new MenuBar();
  78. Menu M_file = new Menu("File");
  79. MenuItem MI_exit = new MenuItem("Exit");
  80. M_file.getItems().addAll(MI_exit);
  81. Menu M_dictionary = new Menu("Dictionary");
  82. MenuItem MI_AddWord = new MenuItem("Add word");
  83. MenuItem MI_DeleteWord = new MenuItem("Delete word");
  84. MenuItem MI_ShowWords = new MenuItem("Show words");
  85. MenuItem MI_ClearDic = new MenuItem("Clear dictionary");
  86. M_dictionary.getItems().addAll(MI_AddWord, MI_DeleteWord, MI_ShowWords, MI_ClearDic);
  87. Menu M_StartTraining = new Menu("Start training");
  88. MenuItem MI_DefaultTraining = new MenuItem("Default training");
  89. M_StartTraining.getItems().add(MI_DefaultTraining);
  90. menu_bar.getMenus().addAll(M_file, M_dictionary, M_StartTraining);
  91. grid.add(menu_bar, 0, 0);
  92. MI_exit.setOnAction(new EventHandler<ActionEvent> () {
  93. public void handle(ActionEvent action_event) {
  94. Runtime.getRuntime().exit(0);
  95. }
  96. });
  97. MI_AddWord.setOnAction(new EventHandler<ActionEvent> () {
  98. public void handle(ActionEvent action_event) {
  99. TextField TF_word = new TextField();
  100. TextField TF_translate = new TextField();
  101. TF_word.setPromptText("Enter word");
  102. TF_translate.setPromptText("Enter translate");
  103. grid.getChildren().clear();
  104. grid.add(menu_bar, 0, 0);
  105. grid.add(TF_word, 0, 1);
  106. grid.add(TF_translate, 1, 1);
  107. TF_translate.setOnAction(new EventHandler<ActionEvent> () {
  108. public void handle(ActionEvent action_event) {
  109. dic.AddWord(TF_word.getText(), TF_translate.getText());
  110. grid.getChildren().clear();
  111. grid.add(menu_bar, 0, 0);
  112. }
  113. });
  114. }
  115. });
  116. MI_DeleteWord.setOnAction(new EventHandler<ActionEvent> () {
  117. public void handle(ActionEvent action_event) {
  118. TextField TF_word = new TextField();
  119. TF_word.setPromptText("Enter word which you want to delete");
  120. grid.getChildren().clear();
  121. grid.add(menu_bar, 0, 0);
  122. grid.add(TF_word, 0, 1); // TF_Word находиться в 0 колонке и 1 рядке
  123. TF_word.setOnAction(new EventHandler<ActionEvent> () {
  124. public void handle(ActionEvent action_event) {
  125. dic.DeleteWord(TF_word.getText());
  126. grid.getChildren().clear();
  127. grid.add(menu_bar, 0, 0);
  128. }
  129. });
  130. }
  131. });
  132. MI_ShowWords.setOnAction(new EventHandler<ActionEvent> () {
  133. public void handle(ActionEvent action_event) {
  134. grid.getChildren().clear();
  135. grid.add(menu_bar, 0, 0);
  136. for(int i = 0; i < dic.getWords().size(); i++) {
  137. Text text = new Text();
  138. text.setText(dic.getWords().get(i));
  139. grid.add(text, 0, i+1);
  140. }
  141. }
  142. });
  143. MI_ClearDic.setOnAction(new EventHandler<ActionEvent> () {
  144. public void handle(ActionEvent action_event) {
  145. dic.ClearDic();
  146. }
  147. });
  148. MI_DefaultTraining.setOnAction(new EventHandler<ActionEvent> () {
  149. public void handle(ActionEvent action_event) {
  150. for(int i = 0; i < dic.getWords().size(); i++) {
  151. Text T_Word = new Text();
  152. TextField TF_Translate = new TextField();
  153. T_Word.setText(dic.getWords().get(i));
  154. TF_Translate.setPromptText("Enter translate");
  155. grid.getChildren().clear();
  156. grid.add(menu_bar, 0, 0);
  157. grid.add(T_Word, 0, 1);
  158. grid.add(TF_Translate, 1, 1);
  159. TF_Translate.setOnAction(new EventHandler<ActionEvent> () {
  160. public void handle(ActionEvent action_event) {
  161. if(dic.getWords().get(i).contains(TF_Translate.getText())) {
  162. Text text = new Text("Correct");
  163. grid.getChildren().clear();
  164. grid.add(menu_bar, 0, 0);
  165. grid.add(text, 0, 1);
  166. }
  167. }
  168. });
  169. }
  170. }
  171. });
  172. stage.show();
  173. }
  174. }
Ошибка в 202 строке, пишет "local variables referenced from an inner class must be final or effectively final". Помогите исправить.
if(dic.getWords().get(i).contains(TF_Translate.getText()))
здесь ошибка.
Чтобы долго не искали методы и классы, напишу интерфейсы и обьявления
Листинг программы
  1. MyDictionary dic = new MyDictionary();
  2. public Vector<String> getWords();
  3. TextField TF_Translate = new TextField();

Решение задачи: «Ошибка компиляции»

textual
Листинг программы
  1.                    final int k = i;
  2.                    TF_Translate.setOnAction(new EventHandler<ActionEvent> () {
  3.  
  4.                       public void handle(ActionEvent action_event)  {
  5.                           if(dic.getWords().get(k).contains(TF_Translate.getText())) {
  6.                               Text text = new Text("Correct");
  7.                              
  8.                               grid.getChildren().clear();
  9.                               grid.add(menu_bar, 0, 0);
  10.                               grid.add(text, 0, 1);
  11.                           }
  12.                       }
  13.                    });

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут