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.

164 lines
5.9 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. /**
  15. * Konstructor is called before initialize()
  16. */
  17. public MatrixCalcController() {
  18. // Setup of some Fields could be defined here.
  19. }
  20. /**
  21. * Initializes the controller class. This method is automatically called after
  22. * the fxml file has been loaded.
  23. */
  24. @FXML
  25. public void initialize() {
  26. /**
  27. * Convert Strings to matricies, multiply them and output the result.
  28. */
  29. multiplyButton.setOnMouseClicked((event) -> {
  30. MatrixCalcMath math = new MatrixCalcMath();
  31. MatrixCalcIOUtils util = new MatrixCalcIOUtils();
  32. String stringMatrixA = matrixATextArea.getText();
  33. String stringMatrixB = matrixBTextArea.getText();
  34. if (util.checkInput(stringMatrixA) && util.checkInput(stringMatrixB)) {
  35. double[][] matrixA = util.stringToMatrix(stringMatrixA);
  36. double[][] matrixB = util.stringToMatrix(stringMatrixB);
  37. double[][] result = math.matrixMultiplication(matrixA, matrixB);
  38. String DisplayableString = util.outputMatrixToOutputText(result);
  39. outputText.setText(DisplayableString);
  40. outputText.setTextAlignment(TextAlignment.CENTER);
  41. }
  42. // System.out.println(matrixATextArea.getText());
  43. });
  44. transposeButton.setOnMouseClicked((event) -> {
  45. MatrixCalcMath math = new MatrixCalcMath();
  46. MatrixCalcIOUtils util = new MatrixCalcIOUtils();
  47. String stringMatrixA = matrixATextArea.getText();
  48. if (util.checkInput(stringMatrixA)) {
  49. double[][] matrixA = util.stringToMatrix(stringMatrixA);
  50. double[][] result = math.matrixTransponation(matrixA);
  51. String DisplayableString = util.outputMatrixToOutputText(result);
  52. outputText.setText(DisplayableString);
  53. outputText.setTextAlignment(TextAlignment.CENTER);
  54. }
  55. });
  56. addButton.setOnMouseClicked((event) -> {
  57. MatrixCalcMath math = new MatrixCalcMath();
  58. MatrixCalcIOUtils util = new MatrixCalcIOUtils();
  59. String stringMatrixA = matrixATextArea.getText();
  60. String stringMatrixB = matrixBTextArea.getText();
  61. if (util.checkInput(stringMatrixA) && util.checkInput(stringMatrixB)) {
  62. double[][] matrixA = util.stringToMatrix(stringMatrixA);
  63. double[][] matrixB = util.stringToMatrix(stringMatrixB);
  64. double[][] result = math.matrixAddition(matrixA, matrixB);
  65. String DisplayableString = util.outputMatrixToOutputText(result);
  66. outputText.setText(DisplayableString);
  67. outputText.setTextAlignment(TextAlignment.CENTER);
  68. }
  69. });
  70. substractButton.setOnMouseClicked((event) -> {
  71. MatrixCalcMath math = new MatrixCalcMath();
  72. MatrixCalcIOUtils util = new MatrixCalcIOUtils();
  73. String stringMatrixA = matrixATextArea.getText();
  74. String stringMatrixB = matrixBTextArea.getText();
  75. if (util.checkInput(stringMatrixA) && util.checkInput(stringMatrixB)) {
  76. double[][] matrixA = util.stringToMatrix(stringMatrixA);
  77. double[][] matrixB = util.stringToMatrix(stringMatrixB);
  78. double[][] result = math.matrixSubstraction(matrixA, matrixB);
  79. String DisplayableString = util.outputMatrixToOutputText(result);
  80. outputText.setText(DisplayableString);
  81. outputText.setTextAlignment(TextAlignment.CENTER);
  82. }
  83. });
  84. DetAButton.setOnMouseClicked((event) -> {
  85. MatrixCalcMath math = new MatrixCalcMath();
  86. MatrixCalcIOUtils util = new MatrixCalcIOUtils();
  87. String stringMatrixA = matrixATextArea.getText();
  88. if (util.checkInput(stringMatrixA)) {
  89. double[][] matrixA = util.stringToMatrix(stringMatrixA);
  90. double result = math.calcDeterminat(matrixA);
  91. String DisplayableString = Double.toString(result);
  92. outputText.setText(DisplayableString);
  93. outputText.setTextAlignment(TextAlignment.CENTER);
  94. }
  95. });
  96. DetBButton.setOnMouseClicked((event) -> {
  97. MatrixCalcMath math = new MatrixCalcMath();
  98. MatrixCalcIOUtils util = new MatrixCalcIOUtils();
  99. String stringMatrixB = matrixBTextArea.getText();
  100. boolean stop = false;
  101. try {
  102. util.checkInput(stringMatrixB);
  103. } catch (IllegalArgumentException e) {
  104. stop = true;
  105. outputText.setText(e.getMessage());
  106. outputText.setTextAlignment(TextAlignment.CENTER);
  107. e.printStackTrace();
  108. }
  109. if (util.checkInput(stringMatrixB) && !stop) {
  110. double[][] matrixB = util.stringToMatrix(stringMatrixB);
  111. try {
  112. double result = math.calcDeterminat(matrixB);
  113. String DisplayableString = Double.toString(result);
  114. outputText.setText(DisplayableString);
  115. outputText.setTextAlignment(TextAlignment.CENTER);
  116. } catch (IllegalArgumentException e) {
  117. outputText.setText(e.getMessage());
  118. outputText.setTextAlignment(TextAlignment.CENTER);
  119. e.printStackTrace();
  120. }
  121. }
  122. });
  123. }
  124. }