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 {
|
public static void main(String[] args) throws FileNotFoundException {
|
||||||
Scanner sc = new Scanner(System.in);
|
Scanner sc = new Scanner(System.in);
|
||||||
|
Scanner scanner = new Scanner(System.in);
|
||||||
System.out.println("Wie viele Zeilen soll das Spreadsheet haben? (1-99)");
|
System.out.println("Wie viele Zeilen soll das Spreadsheet haben? (1-99)");
|
||||||
|
|
||||||
int eingabeR = sc.nextInt();
|
int eingabeR = scanner.nextInt();
|
||||||
if (eingabeR > 99) {
|
if (eingabeR > 99) {
|
||||||
System.out.println("Eingabe überschreitet das Maximum. Eingabe wird zu 99 gesetzt");
|
System.out.println("Eingabe überschreitet das Maximum. Eingabe wird zu 99 gesetzt");
|
||||||
eingabeR = 99;
|
eingabeR = 99;
|
||||||
|
@ -21,7 +22,7 @@ public class Axel {
|
||||||
System.out.println("Eingabe ist möglich");
|
System.out.println("Eingabe ist möglich");
|
||||||
}
|
}
|
||||||
System.out.println("Wie viele Spalten soll das Spreadsheet haben? (1-26)");
|
System.out.println("Wie viele Spalten soll das Spreadsheet haben? (1-26)");
|
||||||
int eingabeC = sc.nextInt();
|
int eingabeC = scanner.nextInt();
|
||||||
if (eingabeC > 26) {
|
if (eingabeC > 26) {
|
||||||
System.out.println("Eingabe überschreitet das Maximum. Eingabe wird zu 26 gesetzt");
|
System.out.println("Eingabe überschreitet das Maximum. Eingabe wird zu 26 gesetzt");
|
||||||
eingabeC = 26;
|
eingabeC = 26;
|
||||||
|
@ -32,10 +33,11 @@ public class Axel {
|
||||||
// Wert wird automatisch bei Überschreitung zum Maximum
|
// Wert wird automatisch bei Überschreitung zum Maximum
|
||||||
|
|
||||||
//Tabellengröße anpassen nach "Wahl"
|
//Tabellengröße anpassen nach "Wahl"
|
||||||
|
|
||||||
Spreadsheet spr = new Spreadsheet(eingabeR, eingabeC);
|
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("A2", "1");
|
||||||
|
|
||||||
spr.put("B9", "=41+A2");
|
spr.put("B9", "=41+A2");
|
||||||
|
@ -44,7 +46,7 @@ public class Axel {
|
||||||
|
|
||||||
System.out.println(spr);
|
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.
|
// 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 {
|
do {
|
||||||
eingabe = sc.nextLine();
|
eingabe = sc.nextLine();
|
||||||
if (eingabe.equals("j")) {
|
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();
|
eingabeCR = sc.nextLine();
|
||||||
System.out.println("Weisen Sie jetzt einen Wert zu");
|
System.out.println("Weisen Sie jetzt einen Wert zu");
|
||||||
eingabeValue = sc.nextLine();
|
eingabeValue = sc.nextLine();
|
||||||
|
@ -75,6 +77,8 @@ public class Axel {
|
||||||
System.out.println("Falsche eingabe bitte erneut versuchen");
|
System.out.println("Falsche eingabe bitte erneut versuchen");
|
||||||
}
|
}
|
||||||
} while (true);
|
} 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) {
|
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)
|
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
|
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)
|
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)
|
else if (formula.startsWith("MITTELWERT(")) // e.g. MITTELWERT(A3:A5)
|
||||||
result = "TODO"; // TODO
|
result = "TODO"; // TODO
|
||||||
else if (formula.startsWith("STABW(")) // e.g. STABW(C6:D8) -> Standardabweichung
|
else if (formula.startsWith("STABW(")) // e.g. STABW(C6:D8) -> Standardabweichung
|
||||||
|
@ -176,10 +183,43 @@ public class Spreadsheet {
|
||||||
* @return The sum calculated.
|
* @return The sum calculated.
|
||||||
*/
|
*/
|
||||||
private long sum(String startCellName, String endCellName) {
|
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
|
// TODO implement
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method calculates the result of a "normal" algebraic expression. It only needs to support
|
* This method calculates the result of a "normal" algebraic expression. It only needs to support
|
||||||
|
|
Loading…
Reference in New Issue