Ultra Geile Studenten Benutzer Oberfläche (UGSBO)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

209 lines
7.8 KiB

  1. package com.ugsbo.matrixcalc;
  2. import javafx.fxml.FXML;
  3. import javafx.scene.control.*;
  4. import javafx.scene.text.Text;
  5. import javafx.scene.text.TextAlignment;
  6. public class MatrixCalcController {
  7. // Hier werden die fx:id Attribute verknuepft.
  8. @FXML
  9. private Button multiplyButton, addButton, DetAButton, DetBButton, substractButton, transposeButton;
  10. @FXML
  11. private Text errorText, outputText;
  12. @FXML
  13. private TextArea matrixATextArea, matrixBTextArea;
  14. private MatrixCalcMath math = new MatrixCalcMath();
  15. private MatrixCalcIOUtils util = new MatrixCalcIOUtils();
  16. /**
  17. * Konstructor is called before initialize()
  18. */
  19. public MatrixCalcController() {
  20. // Setup of some Fields could be defined here.
  21. }
  22. /**
  23. * Initializes the controller class. This method is automatically called after
  24. * the fxml file has been loaded.
  25. */
  26. @FXML
  27. public void initialize() {
  28. /**
  29. * Convert Strings to matricies, multiply them and output the result.
  30. */
  31. multiplyButton.setOnMouseClicked((event) -> {
  32. String stringMatrixA = matrixATextArea.getText();
  33. String stringMatrixB = matrixBTextArea.getText();
  34. String[] stringMatrix = { stringMatrixA, stringMatrixB };
  35. checkInputAndDisplayIfInputIsNotValid(stringMatrix, 2);
  36. double[][] matrixA = util.stringToMatrix(stringMatrixA);
  37. double[][] matrixB = util.stringToMatrix(stringMatrixB);
  38. double[][] result = math.matrixMultiplication(matrixA, matrixB);
  39. String DisplayableString = util.outputMatrixToOutputText(result);
  40. outputText.setText(DisplayableString);
  41. outputText.setTextAlignment(TextAlignment.CENTER);
  42. // System.out.println(matrixATextArea.getText());
  43. });
  44. transposeButton.setOnMouseClicked((event) -> {
  45. String stringMatrixA = matrixATextArea.getText();
  46. String[] stringMatrix = { stringMatrixA, "" };
  47. checkInputAndDisplayIfInputIsNotValid(stringMatrix, 1);
  48. double[][] matrixA = util.stringToMatrix(stringMatrixA);
  49. double[][] result = math.matrixTransponation(matrixA);
  50. String DisplayableString = util.outputMatrixToOutputText(result);
  51. outputText.setText(DisplayableString);
  52. outputText.setTextAlignment(TextAlignment.CENTER);
  53. });
  54. addButton.setOnMouseClicked((event) -> {
  55. String stringMatrixA = matrixATextArea.getText();
  56. String stringMatrixB = matrixBTextArea.getText();
  57. String[] stringMatrix = { stringMatrixA, stringMatrixB };
  58. checkInputAndDisplayIfInputIsNotValid(stringMatrix, 2);
  59. double[][] matrixA = util.stringToMatrix(stringMatrixA);
  60. double[][] matrixB = util.stringToMatrix(stringMatrixB);
  61. double[][] result = math.matrixAddition(matrixA, matrixB);
  62. String DisplayableString = util.outputMatrixToOutputText(result);
  63. outputText.setText(DisplayableString);
  64. outputText.setTextAlignment(TextAlignment.CENTER);
  65. });
  66. substractButton.setOnMouseClicked((event) -> {
  67. String stringMatrixA = matrixATextArea.getText();
  68. String stringMatrixB = matrixBTextArea.getText();
  69. String[] stringMatrix = { stringMatrixA, stringMatrixB };
  70. checkInputAndDisplayIfInputIsNotValid(stringMatrix, 2);
  71. double[][] matrixA = util.stringToMatrix(stringMatrixA);
  72. double[][] matrixB = util.stringToMatrix(stringMatrixB);
  73. try {
  74. double[][] result = math.matrixSubstraction(matrixA, matrixB);
  75. String DisplayableString = util.outputMatrixToOutputText(result);
  76. outputText.setText(DisplayableString);
  77. outputText.setTextAlignment(TextAlignment.CENTER);
  78. } catch (Exception e) {
  79. outputText.setText(e.getMessage());
  80. outputText.setTextAlignment(TextAlignment.CENTER);
  81. }
  82. });
  83. DetAButton.setOnMouseClicked((event) -> {
  84. String stringMatrixA = matrixATextArea.getText();
  85. String[] stringMatrix = { stringMatrixA, "" };
  86. checkInputAndDisplayIfInputIsNotValid(stringMatrix, 1);
  87. double[][] matrixA = util.stringToMatrix(stringMatrixA);
  88. try {
  89. double result = math.calcDeterminat(matrixA);
  90. String DisplayableString = Double.toString(result);
  91. outputText.setText(DisplayableString);
  92. outputText.setTextAlignment(TextAlignment.CENTER);
  93. } catch (IllegalArgumentException e) {
  94. outputText.setText(e.getMessage());
  95. outputText.setTextAlignment(TextAlignment.CENTER);
  96. }
  97. });
  98. DetBButton.setOnMouseClicked((event) -> {
  99. String stringMatrixB = matrixBTextArea.getText();
  100. String[] stringMatrix = { "", stringMatrixB };
  101. checkInputAndDisplayIfInputIsNotValid(stringMatrix, 1);
  102. double[][] matrixB = util.stringToMatrix(stringMatrixB);
  103. try {
  104. double result = math.calcDeterminat(matrixB);
  105. String DisplayableString = Double.toString(result);
  106. outputText.setText(DisplayableString);
  107. outputText.setTextAlignment(TextAlignment.CENTER);
  108. } catch (IllegalArgumentException e) {
  109. outputText.setText(e.getMessage());
  110. outputText.setTextAlignment(TextAlignment.CENTER);
  111. }
  112. });
  113. }
  114. // TODO Wirte tests for the extracted Methode.
  115. /**
  116. * Checks the Input and Displays it if the Input is Valid.
  117. *
  118. * @param stringMatrix Contains both input matrices if
  119. * numberOfMarriciesToMatch is 2. If the number
  120. * is 1 than one of them has to be a empty String
  121. * @param numberOfMatricesToMatch If the number is 1 onely one Marix will be
  122. * verifyed and the otherone needs to be an empty
  123. * String in the stringMatrix
  124. */
  125. private void checkInputAndDisplayIfInputIsNotValid(String[] stringMatrix, int numberOfMatricesToMatch) {
  126. if (numberOfMatricesToMatch == 1 && !stringMatrix[0].equals("")) {
  127. try {
  128. util.checkInput(stringMatrix[0]);
  129. } catch (Exception e) {
  130. outputText.setText(e.getMessage() + "A");
  131. outputText.setTextAlignment(TextAlignment.CENTER);
  132. }
  133. } else if (numberOfMatricesToMatch == 1 && !stringMatrix[1].equals("")) {
  134. try {
  135. util.checkInput(stringMatrix[1]);
  136. } catch (Exception e) {
  137. outputText.setText(e.getMessage() + "B");
  138. outputText.setTextAlignment(TextAlignment.CENTER);
  139. }
  140. } else if (numberOfMatricesToMatch == 2 && !stringMatrix[0].equals("") && !stringMatrix[1].equals("")) {
  141. try {
  142. util.checkInput(stringMatrix[0]);
  143. } catch (Exception e) {
  144. outputText.setText(e.getMessage() + "A");
  145. outputText.setTextAlignment(TextAlignment.CENTER);
  146. }
  147. try {
  148. util.checkInput(stringMatrix[1]);
  149. } catch (Exception e) {
  150. outputText.setText(e.getMessage() + "B");
  151. outputText.setTextAlignment(TextAlignment.CENTER);
  152. }
  153. } else if (stringMatrix[0].equals("")) {
  154. outputText.setText("Pease insert MatrixA");
  155. outputText.setTextAlignment(TextAlignment.CENTER);
  156. } else if (stringMatrix[1].equals("")) {
  157. outputText.setText("Pease insert MatrixB");
  158. outputText.setTextAlignment(TextAlignment.CENTER);
  159. }
  160. }
  161. }