From 2b95af08d1bdae22121ae62e54379ce9e14968b5 Mon Sep 17 00:00:00 2001 From: selim Date: Wed, 27 Dec 2023 18:06:58 +0100 Subject: [PATCH] More error handling and loop improvements. --- .../informatik/spreadsheet/Axel.java | 23 +++++++++++++++---- .../informatik/spreadsheet/Spreadsheet.java | 11 ++++++++- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/Axel/src/de/hs_mannheim/informatik/spreadsheet/Axel.java b/Axel/src/de/hs_mannheim/informatik/spreadsheet/Axel.java index 8524a11..f684c00 100644 --- a/Axel/src/de/hs_mannheim/informatik/spreadsheet/Axel.java +++ b/Axel/src/de/hs_mannheim/informatik/spreadsheet/Axel.java @@ -1,6 +1,7 @@ package de.hs_mannheim.informatik.spreadsheet; import java.io.FileNotFoundException; +import java.util.InputMismatchException; import java.util.Scanner; /** @@ -11,12 +12,24 @@ import java.util.Scanner; public class Axel { public static void main(String[] args) throws FileNotFoundException { - Scanner sc = new Scanner(System.in); - System.out.println("\nAxel(ExcelFakeVon2211482): "); - System.out.print("\nTabellengröße(ReihenZwischen1-99 SpaltenZwischen1-26): "); - Spreadsheet spr = new Spreadsheet(sc.nextInt(), sc.nextInt()); + Spreadsheet spr = new Spreadsheet(10,10); + boolean match = false; boolean stop = false; + Scanner sc = new Scanner(System.in); + System.out.println("\nAxel(ExcelFakeVon2211482): "); + while (!match) { + try { + System.out.print("\nTabellengröße(ReihenZwischen1-99 SpaltenZwischen1-26): "); + spr = new Spreadsheet(sc.nextInt(), sc.nextInt()); + match = true; + } catch(InputMismatchException i){ + System.out.println("\nGeben Sie zwei Ganzzahlen mit Leerzeichen dazwischen an!"); + System.out.println("\nEnter zum fortfahren."); + sc.nextLine(); + sc.nextLine(); + } + } while (!stop) { try { @@ -39,7 +52,7 @@ public class Axel { System.out.println("\nEinlesen: \nKOMMANDO Dateipfad Trennzeichen StartzelleObenLinks (Alles mit Leerzeichen getrennt.) e.g.:\nEINLESEN Axel/resources/zahlen.csv , A1"); System.out.println("\nSpeichern: \nKOMMANDO Dateipfad (Mit Leerzeichen getrennt.) e.g.:\nSPEICHERN Axel/resources/zahlen.csv"); System.out.println("\nFormel Tabellenansicht: \nKOMMANDO e.g.:\nFORMELN"); - System.out.println("\nZellen Werte/Formeln zuweisen: \nZELLE ZUWEISUNG (Mit Leerzeichen getrennt, Zelle beginnend mit Buchstabe und Zuweisung beginnend mit =.) e.g.:\nA1 =A5+15\n" + + System.out.println("\nZellen Werte/Formeln zuweisen: \nZELLE ZUWEISUNG (Mit Leerzeichen getrennt, Zelle beginnend mit Buchstabe und Zuweisung beginnend mit =; Keine Kommazahlen als Eingabe erlaubt.) e.g.:\nA1 =A5+15\n" + "\nZELLE FORMELZUWEISUNG (Formelzuweisung mit Startzelle bis Endzelle getrennt durch :.) e.g.:" + "\nA2 =SUMME(A1:H10)\t\tA3 =PRODUKT(A1:H10)\t\tA4 =MITTELWERT(A1:H10)\t\tA5 =STABW(A1:H10) (Standartabweichung)\t\tA6 =MIN(A1:H10)\t\tA7 =MAX(A1:H10)"); } diff --git a/Axel/src/de/hs_mannheim/informatik/spreadsheet/Spreadsheet.java b/Axel/src/de/hs_mannheim/informatik/spreadsheet/Spreadsheet.java index ee70b5e..d6771b6 100644 --- a/Axel/src/de/hs_mannheim/informatik/spreadsheet/Spreadsheet.java +++ b/Axel/src/de/hs_mannheim/informatik/spreadsheet/Spreadsheet.java @@ -284,7 +284,8 @@ public class Spreadsheet { result += Double.parseDouble(cells[r][c].getValue()); counter++; } - result /= counter; + if(result!=0) + result /= counter; return result; } private double standardDeviation(String startCellName, String endCellName){ @@ -302,6 +303,9 @@ public class Spreadsheet { avg /= counter; //average/ add cell names to list + if(cellNames.isEmpty()) + return 0; + ArrayList copyCellNames = new ArrayList<>(cellNames); double[] frequency = new double[cellNames.size()]; Arrays.fill(frequency,1); @@ -348,6 +352,9 @@ public class Spreadsheet { if(!cells[r][c].isEmpty()) cellNames.add(getCellName(r, c)); + if(cellNames.isEmpty()) + return 0; + double result = Double.parseDouble(get(cellNames.get(0))); for(int i = 0; i< cellNames.size(); i++) try { @@ -364,6 +371,8 @@ public class Spreadsheet { if(!cells[r][c].isEmpty()) cellNames.add(getCellName(r, c)); + if(cellNames.isEmpty()) + return 0; double result = Double.parseDouble(get(cellNames.get(0))); for(int i = 0; i< cellNames.size(); i++)