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 ausgegeben
Sebastian Tews 2024-01-10 23:21:44 +01:00
parent 0c46be39b4
commit 98942ba56d
2 changed files with 54 additions and 10 deletions

View File

@ -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)
} }
} }

View File

@ -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