forked from hummel/PR1-Spreadsheet
Javadoc-Kommentare hinzugefügt (auf Deutsch) und die Standardabweichung "stabw(" hinzugefügt
parent
2590d29cec
commit
de40e65e21
|
@ -96,21 +96,24 @@ public class Spreadsheet {
|
|||
return merker-1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Hier wird überprüft, ob die Zelle existiert.
|
||||
* @param a Name der Zelle
|
||||
* @return true = Zelle existiert, false = Zelle existent nicht (zumindest nicht in der Tabelle)
|
||||
*/
|
||||
public boolean zelleneingabe_pruefen(String a) {
|
||||
if (a.length() < 2) { //es soll eine einzelne Zelle angesprochen werde, also muss dafür die länge >2 sein
|
||||
return false;
|
||||
}
|
||||
if (getRow(a) < 0 || getRow(a) >= cells.length) { //überprüfung ob die eingabe in die rows länge passt
|
||||
if (getRow(a) < 0 || getRow(a) >= cells.length) { //überprüfung, ob die eingabe in die rows länge passt
|
||||
return false;
|
||||
}
|
||||
if (getCol(a) < 0 || getCol(a) >= cells[0].length) { //überprüfung ob die eingabe in die Columns länge passt
|
||||
if (getCol(a) < 0 || getCol(a) >= cells[0].length) { //überprüfung, ob die eingabe in die Columns länge passt
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// -----
|
||||
// business logic
|
||||
|
||||
|
@ -123,7 +126,7 @@ public class Spreadsheet {
|
|||
* @exception IOException If path does not exist.
|
||||
*/
|
||||
public void readCsv(String path, char separator, String startCellName) throws FileNotFoundException {
|
||||
// TODO: implement this
|
||||
//implement this
|
||||
ArrayList<String> lines = readFile(path);
|
||||
String[] einzelnde_lines = new String[lines.size()];
|
||||
int row_startcell = getRow(startCellName);
|
||||
|
@ -137,6 +140,12 @@ public class Spreadsheet {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Liest eine csb Datei ein und speichert sie in eine ArrayList
|
||||
* @param path von der Datei
|
||||
* @return Liste mit den gespeicherten Zeilen von der csv Datei
|
||||
* @throws FileNotFoundException
|
||||
*/
|
||||
public static ArrayList<String> readFile(String path) throws FileNotFoundException {
|
||||
ArrayList<String> lines = new ArrayList<>();
|
||||
Scanner sc = new Scanner(new File(path));
|
||||
|
@ -191,7 +200,7 @@ public class Spreadsheet {
|
|||
else if (formula.startsWith("MITTELWERT(")) // e.g. MITTELWERT(A3:A5)
|
||||
result = "" + mittelwert(formula.substring(11, 13), formula.substring(14, 16));
|
||||
else if (formula.startsWith("STABW(")) // e.g. STABW(C6:D8) -> Standardabweichung
|
||||
result = "TODO"; // TODO
|
||||
result = "" + stabw(formula.substring(6, 8), formula.substring(9, 11));
|
||||
else if (formula.startsWith("MIN(")) // e.g. MIN(C13:H13) -> kleinster Wert
|
||||
result = "" + min(formula.substring(4, 6), formula.substring(7, 9));
|
||||
else if (formula.startsWith("MAX(")) // e.g. MAX(A1:A10) -> größter Wert
|
||||
|
@ -207,6 +216,47 @@ public class Spreadsheet {
|
|||
cells[row][col].setValue("" + result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Berechnet die Standardabweichung
|
||||
* @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 Ergebnis bzw. die Standardabweichung
|
||||
*/
|
||||
private int stabw(String startCellName, String endCellName) {
|
||||
int startCellRow = getRow(startCellName);
|
||||
int startCellCol = getCol(startCellName);
|
||||
int endCellRow = getRow(endCellName);
|
||||
int endCellCol = getCol(endCellName);
|
||||
int res = 0;
|
||||
|
||||
int merker = 0;
|
||||
int anzahl = 0;
|
||||
int mittelwert = (int) (mittelwert(startCellName, endCellName));
|
||||
|
||||
//System.out.println("Mittelwert: "+mittelwert);
|
||||
|
||||
for (int i = startCellRow; i <= endCellRow; i++) {
|
||||
for (int j = startCellCol; j <= endCellCol; j++) {
|
||||
merker = Integer.parseInt(cells[i][j].getValue());
|
||||
if (merker <= mittelwert) {
|
||||
res = res + (mittelwert-merker)*(mittelwert-merker);
|
||||
//System.out.println((mittelwert-merker));
|
||||
} else {
|
||||
res = res + (merker - mittelwert)*(merker - mittelwert);
|
||||
//System.out.println((merker - mittelwert));
|
||||
}
|
||||
anzahl++;
|
||||
}
|
||||
}
|
||||
//System.out.println(res);
|
||||
//System.out.println(anzahl);
|
||||
res = res/(anzahl-1); // oder: res = res/(anzahl-1);
|
||||
|
||||
res = (int) Math.sqrt(res);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
|
@ -230,6 +280,12 @@ public class Spreadsheet {
|
|||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rechnet das Produkt aus den Zellen von einem Viereck.
|
||||
* @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 Das Ergebnis.
|
||||
*/
|
||||
private long pro(String startCellName, String endCellName) {
|
||||
int startCellRow = getRow(startCellName);
|
||||
int startCellCol = getCol(startCellName);
|
||||
|
@ -251,6 +307,12 @@ public class Spreadsheet {
|
|||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt die kleinste Zahl aus den Zellen von einem Viereck.
|
||||
* @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 Kleinste Zahl
|
||||
*/
|
||||
private long min(String startCellName, String endCellName) {
|
||||
int startCellRow = getRow(startCellName);
|
||||
int startCellCol = getCol(startCellName);
|
||||
|
@ -272,6 +334,12 @@ public class Spreadsheet {
|
|||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt die größte Zahl aus den Zellen von einem Viereck.
|
||||
* @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 größte Zahl
|
||||
*/
|
||||
private long max(String startCellName, String endCellName) {
|
||||
int startCellRow = getRow(startCellName);
|
||||
int startCellCol = getCol(startCellName);
|
||||
|
@ -293,6 +361,12 @@ public class Spreadsheet {
|
|||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Berechnet den Durchschnitt aus den Zellen von einem Viereck. (Summe von allen geteilt durch die Anzahl der Zellen)
|
||||
* @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 Durchschnitt
|
||||
*/
|
||||
private long mittelwert(String startCellName, String endCellName) {
|
||||
int startCellRow = getRow(startCellName);
|
||||
int startCellCol = getCol(startCellName);
|
||||
|
@ -383,8 +457,15 @@ public class Spreadsheet {
|
|||
return res;
|
||||
}
|
||||
|
||||
private long rechne(long a, int merker, int b) {
|
||||
switch(merker){
|
||||
/**
|
||||
* Berechnet 2 beliebige Zahlen, plus, minus, mal oder geteilt. (muss man angeben)
|
||||
* @param auswahl hiermit wird bestimmt welche Rechenart benutzt werden soll.
|
||||
* @param a erste Zahl
|
||||
* @param b zweite Zahl
|
||||
* @return Ergebnis
|
||||
*/
|
||||
private long rechne(long a, int auswahl, int b) {
|
||||
switch(auswahl){
|
||||
case 1:
|
||||
return a + b;
|
||||
case 2:
|
||||
|
|
Loading…
Reference in New Issue