forked from hummel/PR1-Spreadsheet
Kleines Menü erstellt
Zeilen und Spaltenbegrenzung csvReader erstellt Summenformel und Produktformel erstellt. + Die Möglichkeit erstellt vorhandene Textdatei zu verändern und diese zu Speichern. Wird beim auslesen auch verändert ausgegebenmain
parent
0c46be39b4
commit
98942ba56d
|
@ -11,9 +11,10 @@ public class Axel {
|
|||
|
||||
public static void main(String[] args) throws FileNotFoundException {
|
||||
Scanner sc = new Scanner(System.in);
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
System.out.println("Wie viele Zeilen soll das Spreadsheet haben? (1-99)");
|
||||
|
||||
int eingabeR = sc.nextInt();
|
||||
int eingabeR = scanner.nextInt();
|
||||
if (eingabeR > 99) {
|
||||
System.out.println("Eingabe überschreitet das Maximum. Eingabe wird zu 99 gesetzt");
|
||||
eingabeR = 99;
|
||||
|
@ -21,7 +22,7 @@ public class Axel {
|
|||
System.out.println("Eingabe ist möglich");
|
||||
}
|
||||
System.out.println("Wie viele Spalten soll das Spreadsheet haben? (1-26)");
|
||||
int eingabeC = sc.nextInt();
|
||||
int eingabeC = scanner.nextInt();
|
||||
if (eingabeC > 26) {
|
||||
System.out.println("Eingabe überschreitet das Maximum. Eingabe wird zu 26 gesetzt");
|
||||
eingabeC = 26;
|
||||
|
@ -32,10 +33,11 @@ public class Axel {
|
|||
// Wert wird automatisch bei Überschreitung zum Maximum
|
||||
|
||||
//Tabellengröße anpassen nach "Wahl"
|
||||
|
||||
Spreadsheet spr = new Spreadsheet(eingabeR, eingabeC);
|
||||
spr.readCsv("C:\\Users\\sebas\\IdeaProjects\\PR1-Spreadsheet\\Axel\\resources\\zahlen.csv",',', "A1");
|
||||
// csv auslesen
|
||||
|
||||
spr.put("A3", "123");
|
||||
//spr.put("A1", "123");
|
||||
spr.put("A2", "1");
|
||||
|
||||
spr.put("B9", "=41+A2");
|
||||
|
@ -44,7 +46,7 @@ public class Axel {
|
|||
|
||||
System.out.println(spr);
|
||||
|
||||
spr.saveCsv("C:\\Users\\sebas\\IdeaProjects\\PR1-Spreadsheet\\Axel\\resources\\zahlen.csv");
|
||||
//spr.saveCsv("C:\\Users\\sebas\\IdeaProjects\\PR1-Spreadsheet\\Axel\\resources\\zahlen.csv");
|
||||
|
||||
// TODO: You might want to put "UI loop" for entering value and formulas here resp. in some UI methods.
|
||||
|
||||
|
@ -58,7 +60,7 @@ public class Axel {
|
|||
do {
|
||||
eingabe = sc.nextLine();
|
||||
if (eingabe.equals("j")) {
|
||||
System.out.println("Geben Sie die Spalte (A-J) und die Zeile (1-10)");
|
||||
System.out.println("Geben Sie die Spalte (A-Z) und die Zeile (1-99)");
|
||||
eingabeCR = sc.nextLine();
|
||||
System.out.println("Weisen Sie jetzt einen Wert zu");
|
||||
eingabeValue = sc.nextLine();
|
||||
|
@ -75,6 +77,8 @@ public class Axel {
|
|||
System.out.println("Falsche eingabe bitte erneut versuchen");
|
||||
}
|
||||
} while (true);
|
||||
spr.saveCsv("C:\\Users\\sebas\\IdeaProjects\\PR1-Spreadsheet\\Axel\\resources\\zahlen.csv");
|
||||
// Speichern der Tabelle bzw Inhalt der Textdatei(Änderungen)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -67,7 +67,14 @@ public class Spreadsheet {
|
|||
}
|
||||
|
||||
private int getRow(String cellName) {
|
||||
return cellName.charAt(1) - '1';
|
||||
int ergebnis = 0;
|
||||
for (int i = 1; i < cellName.length() ; i++) {
|
||||
ergebnis = (ergebnis * 10) + cellName.charAt(i) - '0';
|
||||
|
||||
|
||||
}
|
||||
return ergebnis-1;
|
||||
|
||||
}
|
||||
|
||||
// -----
|
||||
|
@ -149,7 +156,7 @@ public class Spreadsheet {
|
|||
if (formula.startsWith("SUMME(")) // e.g. SUMME(A3:A8)
|
||||
result = "" + sum(formula.substring(6, 8), formula.substring(9, 11)); // TODO adapt to cells with two digits
|
||||
else if (formula.startsWith("PRODUKT(")) // e.g. PRODUKT(A3:B9)
|
||||
result = "TODO"; // TODO
|
||||
result = "" + multiplier(formula.substring(6, 8), formula.substring(9, 11)); // TODO
|
||||
else if (formula.startsWith("MITTELWERT(")) // e.g. MITTELWERT(A3:A5)
|
||||
result = "TODO"; // TODO
|
||||
else if (formula.startsWith("STABW(")) // e.g. STABW(C6:D8) -> Standardabweichung
|
||||
|
@ -176,10 +183,43 @@ public class Spreadsheet {
|
|||
* @return The sum calculated.
|
||||
*/
|
||||
private long sum(String startCellName, String endCellName) {
|
||||
|
||||
int startRow = getRow(startCellName);
|
||||
int startCol = getCol(startCellName);
|
||||
int endRow = getRow(endCellName);
|
||||
int endCol = getCol(endCellName);
|
||||
|
||||
long result = 0;
|
||||
|
||||
for (int i = startRow; i <= endRow; i++) {
|
||||
for (int j = startCol; j <= endCol; j++) {
|
||||
result += (Integer.parseInt(cells[i][j].getValue()));
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
private long multiplier(String startCellName, String endCellName) {
|
||||
|
||||
int startRow = getRow(startCellName);
|
||||
int startCol = getCol(startCellName);
|
||||
int endRow = getRow(endCellName);
|
||||
int endCol = getCol(endCellName);
|
||||
|
||||
long result = 1; // 1 da hier Multiplikation startet
|
||||
|
||||
for (int i = startRow; i <= endRow; i++) {
|
||||
for (int j = startCol; j <= endCol; j++) {
|
||||
result *= (Integer.parseInt(cells[i][j].getValue()));
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// TODO implement
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method calculates the result of a "normal" algebraic expression. It only needs to support
|
||||
|
|
Loading…
Reference in New Issue