Browse Source
REFACTORING Moved some methodes in order to get a cleaner Struckture
featureMatrixCalculator
REFACTORING Moved some methodes in order to get a cleaner Struckture
featureMatrixCalculator
Lukas Reichwein
5 years ago
5 changed files with 169 additions and 172 deletions
-
78src/main/java/com/ugsbo/matrixcalc/MatrixCalcController.java
-
101src/main/java/com/ugsbo/matrixcalc/MatrixCalcIOUtils.java
-
27src/main/java/com/ugsbo/matrixcalc/MatrixCalcMath.java
-
82src/test/java/com/ugsbo/matrixcalc/MatrixIOUtilsTest.java
-
53src/test/java/com/ugsbo/matrixcalc/MatrixInputcheckTest.java
@ -0,0 +1,101 @@ |
|||||
|
package com.ugsbo.matrixcalc; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.regex.Matcher; |
||||
|
import java.util.regex.Pattern; |
||||
|
|
||||
|
public class MatrixCalcIOUtils { |
||||
|
/** |
||||
|
* Prints a given 2D-Array to the output text Field. |
||||
|
* |
||||
|
* @param output2DArray The Array that gets Displayed |
||||
|
*/ |
||||
|
protected String outputMatrixToOutputText(double[][] output2DArray) { |
||||
|
// convert array to String |
||||
|
String DisplayableString = convertsArrayToStringInOrderToDisplayIt(output2DArray); |
||||
|
// Display output |
||||
|
return DisplayableString; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Converts Array to String in oder to Display it. |
||||
|
* |
||||
|
* @param array2D the array wich will be converted to an Displayable String |
||||
|
* @return The Displayable String |
||||
|
*/ |
||||
|
protected String convertsArrayToStringInOrderToDisplayIt(double[][] array2D) { |
||||
|
String displayableString = ""; |
||||
|
for (int i = 0; i < array2D.length; i++) { |
||||
|
for (int j = 0; j < array2D[0].length; j++) { |
||||
|
displayableString += array2D[i][j] + " "; |
||||
|
// System.out.println(result[i][j]); |
||||
|
} |
||||
|
displayableString += "\n\n"; |
||||
|
} |
||||
|
return displayableString; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Chcks if the Input is Valid, with Regex. Returns true if the Matrix can be |
||||
|
* matched by the regular Expression. |
||||
|
* |
||||
|
* @param matrix It is the InputMatrix |
||||
|
* @return true if the Matrix is valid Input. |
||||
|
*/ |
||||
|
protected boolean checkInput(String matrix) { |
||||
|
boolean isMatched = false; |
||||
|
if (matrix.length() == 0) { |
||||
|
throw new IllegalArgumentException("Please insert a Matrix"); |
||||
|
} |
||||
|
|
||||
|
// Matches digits witch following spaces 1 to 3 times |
||||
|
String row1 = "(\\d*\\u0020*){1,3}"; |
||||
|
// Matches newlineCurrierReturn followed by digits witch following spaces 1 to |
||||
|
// 3times |
||||
|
String row2 = "(\\n){0,3}(\\d*\\u0020*){0,3}"; |
||||
|
String row3 = "(\\n){0,3}(\\d*\\u0020*){0,3}"; |
||||
|
|
||||
|
// TODO get the input check more stricktly missing matrix slots are allowed. |
||||
|
|
||||
|
Pattern p = Pattern.compile(row1 + row2 + row3); |
||||
|
Matcher m = p.matcher(matrix); |
||||
|
|
||||
|
isMatched = m.matches(); |
||||
|
|
||||
|
// System.out.println(isMatched); |
||||
|
return isMatched; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Converts a String form the Inputfield to an 2D-Array aka Matrix. |
||||
|
* |
||||
|
* @param stringMatrix The String form the Inputfield |
||||
|
* @return Matrix as a 2D-Array |
||||
|
*/ |
||||
|
public double[][] stringToMatrix(String stringMatrix) { |
||||
|
|
||||
|
ArrayList<String[]> singleNumbersArr = new ArrayList<String[]>(); |
||||
|
|
||||
|
// Splitting the strings into their rows |
||||
|
String[] singleNumbers = null; |
||||
|
String[] rows = stringMatrix.split("\n"); |
||||
|
for (int i = 0; i < rows.length; i++) { |
||||
|
// System.out.println(rows[i]); |
||||
|
// Splitting rows into their Numbers |
||||
|
singleNumbers = rows[i].split("\\s"); |
||||
|
singleNumbersArr.add(singleNumbers); |
||||
|
} |
||||
|
|
||||
|
int rowlength = singleNumbersArr.get(0).length; // row.length |
||||
|
int columCount = singleNumbersArr.size(); // output.length |
||||
|
double[][] matrix = new double[columCount][rowlength]; |
||||
|
|
||||
|
for (int columIndex = 0; columIndex < columCount; columIndex++) { |
||||
|
for (int rowIndex = 0; rowIndex < singleNumbers.length; rowIndex++) { |
||||
|
matrix[columIndex][rowIndex] = Double.parseDouble(singleNumbersArr.get(columIndex)[rowIndex]); |
||||
|
} |
||||
|
} |
||||
|
return matrix; |
||||
|
} |
||||
|
|
||||
|
} |
@ -1,53 +0,0 @@ |
|||||
package com.ugsbo.matrixcalc; |
|
||||
|
|
||||
import static org.junit.Assert.assertTrue; |
|
||||
|
|
||||
import org.junit.Before; |
|
||||
import org.junit.Test; |
|
||||
|
|
||||
/** |
|
||||
* Tests how well worng input can be determent. |
|
||||
*/ |
|
||||
public class MatrixInputcheckTest { |
|
||||
|
|
||||
private MatrixCalcController controller; |
|
||||
|
|
||||
@Before |
|
||||
public void setup() { |
|
||||
controller = new MatrixCalcController(); |
|
||||
} |
|
||||
|
|
||||
@Test(expected = IllegalArgumentException.class) |
|
||||
public void inputEmptySouldThrowAIllegalArgumentException() { |
|
||||
String input = ""; |
|
||||
|
|
||||
controller.checkInput(input); |
|
||||
} |
|
||||
|
|
||||
@Test |
|
||||
public void checkIfA1by3MatrixIsValidInput() { |
|
||||
String input = "1 2 3"; |
|
||||
|
|
||||
boolean result = controller.checkInput(input); |
|
||||
|
|
||||
assertTrue("The 1 by 3 Matrix should be Matched as valid input.", result); |
|
||||
} |
|
||||
|
|
||||
@Test |
|
||||
public void checkIfA2by3MatrixIsValidInput() { |
|
||||
String input = "1 2 3\n1 2 3"; |
|
||||
|
|
||||
boolean result = controller.checkInput(input); |
|
||||
|
|
||||
assertTrue("The 2 by 3 Matrix should be Matched as valid input.", result); |
|
||||
} |
|
||||
|
|
||||
@Test |
|
||||
public void checkIfA3by3MatrixIsValidInput() { |
|
||||
String input = "1 2 3\n1 2 3\n1 2 3"; |
|
||||
|
|
||||
boolean result = controller.checkInput(input); |
|
||||
|
|
||||
assertTrue("The 3 by 3 Matrix should be Matched as valid input.", result); |
|
||||
} |
|
||||
} |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue