Some method descriptions, toString/seeFormula updated, readCsv fix.
parent
2b95af08d1
commit
347d36a669
|
@ -1,10 +1,9 @@
|
||||||
,,,,,,,,,
|
=2,,,=SUMME(A1:A6),,,,,,,,
|
||||||
,,,,,,,,,
|
,,,,,,,,,,,
|
||||||
,,,,,,,,,
|
,,,,,,,,,,,
|
||||||
,,,,,,,,,
|
,,,,,,,,,,,
|
||||||
,,,,,,,,,
|
,,,,,,,,,,,
|
||||||
,,,,,,,,,
|
,,,,,,,,,,,
|
||||||
,,,,,,,,,
|
,,,,,,,,,,,
|
||||||
,,,,,,,,,
|
,,,,,,,,,,,
|
||||||
,,,,,,,,,
|
,,,,,,,,,,,
|
||||||
,,,,,,,,,
|
|
||||||
|
|
|
|
@ -110,7 +110,7 @@ public class Spreadsheet {
|
||||||
for (int r = getRow(startCellName)-1; r < memList.size(); r++)
|
for (int r = getRow(startCellName)-1; r < memList.size(); r++)
|
||||||
for (int c = getCol(startCellName)-1; c < memList.get(0).length(); c++)
|
for (int c = getCol(startCellName)-1; c < memList.get(0).length(); c++)
|
||||||
if(c<memArr[r].length)
|
if(c<memArr[r].length)
|
||||||
put(r, c, memArr[r][c]);
|
cells[r][c].setFormula(memArr[r][c]);
|
||||||
|
|
||||||
sc.close();
|
sc.close();
|
||||||
}
|
}
|
||||||
|
@ -239,7 +239,15 @@ public class Spreadsheet {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!cells[row][col].getFormula().isEmpty())
|
if(!cells[row][col].getFormula().isEmpty())
|
||||||
cells[row][col].setValue(String.format("%.1f",result));
|
if(String.format("%.2f",result).substring(String.format("%.2f",result).length()-2).charAt(0)=='0'&&
|
||||||
|
String.format("%.2f",result).substring(String.format("%.2f",result).length()-2).charAt(1)=='0')
|
||||||
|
cells[row][col].setValue(String.format("%.0f",result));
|
||||||
|
|
||||||
|
else if(String.format("%.2f",result).substring(String.format("%.2f",result).length()-2).charAt(1)=='0')
|
||||||
|
cells[row][col].setValue(String.format("%.1f",result));
|
||||||
|
|
||||||
|
else
|
||||||
|
cells[row][col].setValue(String.format("%.2f",result));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -259,6 +267,14 @@ public class Spreadsheet {
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method for calculating the product 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 endCellName The name of the cell in the lower right corner of the rectangle.
|
||||||
|
* @return The product calculated.
|
||||||
|
*/
|
||||||
private double product(String startCellName, String endCellName) {
|
private double product(String startCellName, String endCellName) {
|
||||||
double result = 0;
|
double result = 0;
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
|
@ -275,6 +291,14 @@ public class Spreadsheet {
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method for calculating the average 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 endCellName The name of the cell in the lower right corner of the rectangle.
|
||||||
|
* @return The average calculated.
|
||||||
|
*/
|
||||||
private double average(String startCellName, String endCellName) {
|
private double average(String startCellName, String endCellName) {
|
||||||
double result = 0;
|
double result = 0;
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
|
@ -288,6 +312,14 @@ public class Spreadsheet {
|
||||||
result /= counter;
|
result /= counter;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method for calculating the standardDeviation 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 endCellName The name of the cell in the lower right corner of the rectangle.
|
||||||
|
* @return The standardDeviation calculated.
|
||||||
|
*/
|
||||||
private double standardDeviation(String startCellName, String endCellName){
|
private double standardDeviation(String startCellName, String endCellName){
|
||||||
ArrayList<String> cellNames = new ArrayList<>();
|
ArrayList<String> cellNames = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -344,6 +376,14 @@ public class Spreadsheet {
|
||||||
return Math.sqrt(mem);
|
return Math.sqrt(mem);
|
||||||
//standardDeviation formula
|
//standardDeviation formula
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to find out the lowest number 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 endCellName The name of the cell in the lower right corner of the rectangle.
|
||||||
|
* @return The lowest number.
|
||||||
|
*/
|
||||||
private double min(String startCellName, String endCellName){
|
private double min(String startCellName, String endCellName){
|
||||||
ArrayList<String> cellNames = new ArrayList<>();
|
ArrayList<String> cellNames = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -363,6 +403,14 @@ public class Spreadsheet {
|
||||||
} catch(NumberFormatException n){}
|
} catch(NumberFormatException n){}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to find out the highest number 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 endCellName The name of the cell in the lower right corner of the rectangle.
|
||||||
|
* @return The highest number.
|
||||||
|
*/
|
||||||
private double max(String startCellName, String endCellName){
|
private double max(String startCellName, String endCellName){
|
||||||
ArrayList<String> cellNames = new ArrayList<>();
|
ArrayList<String> cellNames = new ArrayList<>();
|
||||||
|
|
||||||
|
@ -429,27 +477,49 @@ public class Spreadsheet {
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
private double evaluateOperator(double result, double currentOperand, String currentOperator) {
|
|
||||||
|
/**
|
||||||
|
* This method does the actual calculation with the current operator,
|
||||||
|
* the left and right operands provided by the calculate method.
|
||||||
|
*
|
||||||
|
* @param leftOperand The first operand used to calculate.
|
||||||
|
* @param rightOperand The second operand used to calculate.
|
||||||
|
* @param currentOperator The current operator used to calculate.
|
||||||
|
* @return The partial result calculated.
|
||||||
|
*/
|
||||||
|
private double evaluateOperator(double leftOperand, double rightOperand, String currentOperator) {
|
||||||
switch (currentOperator) {
|
switch (currentOperator) {
|
||||||
case "+":
|
case "+":
|
||||||
return (result + currentOperand);
|
return (leftOperand + rightOperand);
|
||||||
case "-":
|
case "-":
|
||||||
return (result - currentOperand);
|
return (leftOperand - rightOperand);
|
||||||
case "*":
|
case "*":
|
||||||
return (result * currentOperand);
|
return (leftOperand * rightOperand);
|
||||||
case "/":
|
case "/":
|
||||||
return (result / currentOperand);
|
return (leftOperand / rightOperand);
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException("Invalid operator: " + currentOperator);
|
throw new IllegalArgumentException("Invalid operator: " + currentOperator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
///--- ui methods
|
///--- ui methods
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method updates all cells value by provided formula.
|
||||||
|
*
|
||||||
|
* @return nothing.
|
||||||
|
*/
|
||||||
public void updateSpreadsheet() {
|
public void updateSpreadsheet() {
|
||||||
for (int r = 0; r < cells.length; r++)
|
for (int r = 0; r < cells.length; r++)
|
||||||
for (int c = 0; c < cells[r].length; c++)
|
for (int c = 0; c < cells[r].length; c++)
|
||||||
evaluateCell(r, c);
|
evaluateCell(r, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method scans and evaluates the user input.
|
||||||
|
*
|
||||||
|
* @return The boolean true, when the programm is finished by the user input.
|
||||||
|
*/
|
||||||
public boolean cellInput() throws FileNotFoundException {
|
public boolean cellInput() throws FileNotFoundException {
|
||||||
Scanner cs = new Scanner(System.in);
|
Scanner cs = new Scanner(System.in);
|
||||||
|
|
||||||
|
@ -491,36 +561,42 @@ public class Spreadsheet {
|
||||||
inputs.clear();
|
inputs.clear();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method outputs the cell spreadsheet with all the values.
|
||||||
|
*
|
||||||
|
* @return nothing.
|
||||||
|
*/
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
sb.append(System.lineSeparator());
|
sb.append(System.lineSeparator());
|
||||||
sb.append(System.lineSeparator());
|
sb.append(System.lineSeparator());
|
||||||
sb.append(" |");
|
sb.append(" |");
|
||||||
for (int i = 0; i < cells[0].length; i++) {
|
for (int i = 0; i < cells[0].length; i++) {
|
||||||
sb.append(" " + (char) ('A' + i) + " |");
|
sb.append(" " + (char) ('A' + i) + " |");
|
||||||
}
|
}
|
||||||
int rc = 1;
|
int rc = 1;
|
||||||
for (int r = 0; r < cells.length; r++) {
|
for (int r = 0; r < cells.length; r++) {
|
||||||
sb.append(System.lineSeparator());
|
sb.append(System.lineSeparator());
|
||||||
for (int i = 0; i < cells[0].length; i++) {
|
for (int i = 0; i < cells[0].length; i++) {
|
||||||
sb.append("----------------");
|
sb.append("----------------------");
|
||||||
}
|
}
|
||||||
sb.append("------");
|
sb.append("------");
|
||||||
sb.append(System.lineSeparator());
|
sb.append(System.lineSeparator());
|
||||||
sb.append(String.format(" " + "%2s", rc++) + " |");
|
sb.append(String.format(" " + "%2s", rc++) + " |");
|
||||||
|
|
||||||
for (int c = 0; c < cells[r].length; c++) {
|
for (int c = 0; c < cells[r].length; c++) {
|
||||||
if((cells[r][c].getValue()).length()>13)
|
if((cells[r][c].getValue()).length()>19)
|
||||||
sb.append(" " + String.format("%13s", cells[r][c].getValue()).substring(0,13) + " |");
|
sb.append(" " + String.format("%19s", cells[r][c].getValue()).substring(0,19) + " |");
|
||||||
else
|
else
|
||||||
sb.append(" " + String.format("%13s", cells[r][c].getValue()) + " |");
|
sb.append(" " + String.format("%19s", cells[r][c].getValue()) + " |");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
sb.append(System.lineSeparator());
|
sb.append(System.lineSeparator());
|
||||||
for (int i = 0; i < cells[0].length; i++) {
|
for (int i = 0; i < cells[0].length; i++) {
|
||||||
sb.append("----------------");
|
sb.append("----------------------");
|
||||||
}
|
}
|
||||||
sb.append("------");
|
sb.append("------");
|
||||||
sb.append(System.lineSeparator());
|
sb.append(System.lineSeparator());
|
||||||
|
@ -528,36 +604,40 @@ public class Spreadsheet {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method outputs the cell spreadsheet with all the formulas instead of the values.
|
||||||
|
*
|
||||||
|
* @return nothing.
|
||||||
|
*/
|
||||||
public String toStringShowFormula() {
|
public String toStringShowFormula() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
sb.append(System.lineSeparator());
|
sb.append(System.lineSeparator());
|
||||||
sb.append(System.lineSeparator());
|
sb.append(System.lineSeparator());
|
||||||
sb.append(" |");
|
sb.append(" |");
|
||||||
for (int i = 0; i < cells[0].length; i++) {
|
for (int i = 0; i < cells[0].length; i++) {
|
||||||
sb.append(" " + (char) ('A' + i) + " |");
|
sb.append(" " + (char) ('A' + i) + " |");
|
||||||
}
|
}
|
||||||
int rc = 1;
|
int rc = 1;
|
||||||
for (int r = 0; r < cells.length; r++) {
|
for (int r = 0; r < cells.length; r++) {
|
||||||
sb.append(System.lineSeparator());
|
sb.append(System.lineSeparator());
|
||||||
for (int i = 0; i < cells[0].length; i++) {
|
for (int i = 0; i < cells[0].length; i++) {
|
||||||
sb.append("----------------");
|
sb.append("----------------------");
|
||||||
}
|
}
|
||||||
sb.append("------");
|
sb.append("------");
|
||||||
sb.append(System.lineSeparator());
|
sb.append(System.lineSeparator());
|
||||||
sb.append(String.format(" " + "%2s", rc++) + " |");
|
sb.append(String.format(" " + "%2s", rc++) + " |");
|
||||||
|
|
||||||
for (int c = 0; c < cells[r].length; c++) {
|
for (int c = 0; c < cells[r].length; c++) {
|
||||||
if((cells[r][c].getFormula()).length()>13)
|
sb.append(" " + String.format("%19s", cells[r][c].getFormula()) + " |");
|
||||||
sb.append(" " + String.format("%13s", cells[r][c].getFormula()).substring(0,13) + " |");
|
|
||||||
else
|
|
||||||
sb.append(" " + String.format("%13s", cells[r][c].getFormula()) + " |");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
sb.append(System.lineSeparator());
|
sb.append(System.lineSeparator());
|
||||||
for (int i = 0; i < cells[0].length; i++) {
|
for (int i = 0; i < cells[0].length; i++) {
|
||||||
sb.append("----------------");
|
sb.append("----------------------");
|
||||||
}
|
}
|
||||||
sb.append("------");
|
sb.append("------");
|
||||||
sb.append(System.lineSeparator());
|
sb.append(System.lineSeparator());
|
||||||
|
@ -565,4 +645,4 @@ public class Spreadsheet {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue