1
0
Fork 0

Method comments

Added javadoc comments for all calculating methods
main
Victor Hans-Georg Waitz 2023-12-30 17:18:59 +01:00
parent d2aa28c5b3
commit 6e17bd2434
1 changed files with 68 additions and 5 deletions

View File

@ -199,6 +199,11 @@ public class Spreadsheet {
cells[row][col].setValue("" + result); cells[row][col].setValue("" + result);
} }
/**
* Method to extract the corner cells for a function formula.
* @param formula The formula to isolate the corners for
* @return The formulas corners.
*/
public String[] isolateFunctionCorners(String formula){ public String[] isolateFunctionCorners(String formula){
//? isolate corners //? isolate corners
ArrayList<String> corners = new ArrayList<String>(); ArrayList<String> corners = new ArrayList<String>();
@ -214,6 +219,13 @@ public class Spreadsheet {
return corners.toArray(new String[0]); return corners.toArray(new String[0]);
} }
/**
* A methode to extract a block of cells used in a function formula,
* such as A1 and B3 for SUMME(A1:B3).
* Calls the isolateFunctionCorners methode to get the blocks corners.
* @param formula The formula to get the block for.
* @return The cell block.
*/
public String[] wholeFunctionBlock(String formula){ public String[] wholeFunctionBlock(String formula){
String[] corners = isolateFunctionCorners(formula); String[] corners = isolateFunctionCorners(formula);
@ -236,10 +248,9 @@ public class Spreadsheet {
return block.toArray(new String[0]); return block.toArray(new String[0]);
} }
/* /**
* Method for calculating the sum of a rectangular block of cells, such as from A1 to B3. * Method for calculating the sum of a rectangular block of cells, such as from A1 to B3.
* @param startCellName The name of the cell in the upper left corner of the rectangle. * @param formula The formula to calculate the sum.
* @param endCellName The name of the cell in the lower right corner of the rectangle.
* @return The sum calculated. * @return The sum calculated.
*/ */
public long sum(String formula) { public long sum(String formula) {
@ -255,6 +266,11 @@ public class Spreadsheet {
return res; return res;
} }
/**
* Method for calculating the product of a rectangular block of cells, such as from A1 to B3.
* @param formula The formula to calculate the product.
* @return The product calculated.
*/
public long prod(String formula){ public long prod(String formula){
String[] block = wholeFunctionBlock(formula); String[] block = wholeFunctionBlock(formula);
@ -276,6 +292,11 @@ public class Spreadsheet {
return res; return res;
} }
/**
* Method for calculating the average of a rectangular block of cells, such as from A1 to B3.
* @param formula The formula to calculate the average.
* @return The average calculated.
*/
public long avrg(String formula){ public long avrg(String formula){
String[] block = wholeFunctionBlock(formula); String[] block = wholeFunctionBlock(formula);
@ -302,6 +323,12 @@ public class Spreadsheet {
return res; return res;
} }
/**
* Method for calculating the standard deviation of a rectangular block of cells, such as from A1 to B3.
* Calls the average method.
* @param formula The formula to calculate the standard deviation.
* @return The standard deviation calculated.
*/
public long stdDevp(String formula){ public long stdDevp(String formula){
String[] block = wholeFunctionBlock(formula); String[] block = wholeFunctionBlock(formula);
@ -324,6 +351,11 @@ public class Spreadsheet {
return (long) Math.sqrt(variance); return (long) Math.sqrt(variance);
} }
/**
* Method for selecting the minimum of a rectangular block of cells, such as from A1 to B3.
* @param formula The formula to select the minimum from.
* @return The minimum selected.
*/
public long min(String formula){ public long min(String formula){
String[] block = wholeFunctionBlock(formula); String[] block = wholeFunctionBlock(formula);
@ -347,6 +379,11 @@ public class Spreadsheet {
return currentSmallest; return currentSmallest;
} }
/**
* Method for selecting the maximum of a rectangular block of cells, such as from A1 to B3.
* @param formula The formula to select the maximum from.
* @return The maximum selected.
*/
public long max(String formula){ public long max(String formula){
String[] block = wholeFunctionBlock(formula); String[] block = wholeFunctionBlock(formula);
@ -371,6 +408,12 @@ public class Spreadsheet {
return currentBiggest; return currentBiggest;
} }
/**
* Method to extract only cells which are not empty from a previously calculated block from a
* function formula.
* @param block Block with empty and not empty cells.
* @return Block with only not empty cells.
*/
public String[] extractNotEmptyCells(String[] block){ public String[] extractNotEmptyCells(String[] block){
ArrayList<String> notEmptyValues = new ArrayList<String>(); ArrayList<String> notEmptyValues = new ArrayList<String>();
@ -381,7 +424,6 @@ public class Spreadsheet {
notEmptyValues.add(cellValue); notEmptyValues.add(cellValue);
} }
} }
return notEmptyValues.toArray(new String[0]); return notEmptyValues.toArray(new String[0]);
} }
@ -416,6 +458,13 @@ public class Spreadsheet {
return res; return res;
} }
/**
* Method to extract every single element of an expression and stores them as a separate element in the
* String ArrayList formulaElements and returns it.
* An expression element is either a number, a cell name or an operator.
* @param formula The formula expression to extract elements from.
* @return The elements as single elements.
*/
public static ArrayList<String> extractExpressionElements(String formula){ public static ArrayList<String> extractExpressionElements(String formula){
Matcher m = Pattern.compile("([A-Z][0-9]*)|[-\\+\\*/]|[0-9]*").matcher(formula); Matcher m = Pattern.compile("([A-Z][0-9]*)|[-\\+\\*/]|[0-9]*").matcher(formula);
@ -431,6 +480,15 @@ public class Spreadsheet {
return formulaElements; return formulaElements;
} }
/**
* Method to calculate a single calculation. A single calculation always uses one operator and one value part.
* The value part can be a cell name or a value. The calculation takes the given previous solution and uses the given
* operator and the given value part to calculate and return a new solution.
* @param res The previous result of a calculation.
* @param element The element to calculate to the previous result.
* @param operator The operator used to calculate previous result and element.
* @return The new result.
*/
private long singleCalculation(long res, String element, String operator){ private long singleCalculation(long res, String element, String operator){
String elementType = isValueCellName(element); String elementType = isValueCellName(element);
@ -460,7 +518,12 @@ public class Spreadsheet {
return res; return res;
} }
/**
* Methode to determine if a value part is either a cell name or a value.
* Has the possibility to determine floating point numbers for the future.
* @param sToCheck The string to decide.
* @return The String containing the information if it is a cell name or a value.
*/
public String isValueCellName(String sToCheck){ public String isValueCellName(String sToCheck){
//? 7 -> "value", A1 -> "cellName", 7A -> "invalid" //? 7 -> "value", A1 -> "cellName", 7A -> "invalid"