1
0
Fork 0

Fehlererkennung beim eingeben von Falschen Formeln implementiert

master
devra 2024-01-07 14:30:17 +01:00
parent beaf0b5b9e
commit f9983c112e
2 changed files with 107 additions and 68 deletions

View File

@ -1,6 +1,8 @@
package de.hs_mannheim.informatik.spreadsheet; package de.hs_mannheim.informatik.spreadsheet;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
/** /**
* Part of a simplified spreadsheet system for the PR1 programming lab at Hochschule Mannheim. * Part of a simplified spreadsheet system for the PR1 programming lab at Hochschule Mannheim.
@ -10,25 +12,58 @@ import java.io.FileNotFoundException;
public class Axel { public class Axel {
public static void main(String[] args) throws FileNotFoundException { public static void main(String[] args) throws FileNotFoundException {
Scanner scanner = new Scanner(System.in);
Spreadsheet spr = new Spreadsheet(10,10); Spreadsheet spr = new Spreadsheet(10,10);
System.out.println(); System.out.println();
spr.put("A1", "13"); // spr.put("A1", "13");
spr.put("A2", "1"); // spr.put("A2", "1");
spr.put("A3", "123"); // spr.put("A3", "123");
//
// spr.put("B1", "=3");
// spr.put("c1", "=A2-A1+30");
// spr.put("B9", "=41+A1");
// spr.put("J5", "=7*6/5");
// spr.put("J6", "=3/2");
spr.put("B1", "=A2");
spr.put("c1", "=A2-A1+30");
spr.put("B9", "=41+A1");
spr.put("J5", "=7*6/5");
spr.put("J6", "=3/2");
int test=1;
System.out.println("Wilkommen zum coolsten Spreadsheet Programm der Welt!");
System.out.println("Beispiel-Formel: 'B2=15+5' ");
while(test==1) {
System.out.println("Geben sie ihre Formel ein: ");
System.out.print("-> ");
String userInput = scanner.nextLine();
if(userInput.matches("[A-Za-z][1-9][0-9]?="
+ "((((([A-Za-z][1-9][0-9]?)|([0-9]+))(\\*|\\+|\\-|\\/))*"
+ "(([A-Za-z][1-9][0-9]?)|([0-9]+)))|"
+ "((SUMME|PRODUKT|MID|STABW|MIN|MAX)\\(([A-Za-z][1-9][0-9]*\\:[A-Za-z][1-9][0-9]*)\\)))"))
{
String[] parts = userInput.split("=");
spr.put(parts[0],"="+ parts[1]);
// System.out.println(parts[0]);
System.out.println(spr); System.out.println(spr);
}
else {
System.out.println("Formel ist nicht valide! ");
}
// System.out.println("Was möchten sie machen?");
//
// System.out.println("1. Dokument öffnen");
// System.out.println("2. neues Dokument erstellen");
//spr.saveCsv("C:\\Users\\devra\\git\\Axel\\Axel\\resources\\zahlen.csv");
}
spr.saveCsv("C:\\Users\\devra\\git\\Axel\\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.
} }

View File

@ -69,7 +69,15 @@ public class Spreadsheet {
} }
private int getRow(String cellName) { private int getRow(String cellName) {
return cellName.charAt(1) - '1'; if(cellName.length()>2) {
int tenDigit=cellName.charAt(1)-'0';
int oneDigit=cellName.charAt(2)-'0';
int combined= tenDigit*10+oneDigit;
return combined -1;
}
else {
return cellName.charAt(1) - '1'; //adjust for indexing at 0
}
} }
// ----- // -----
@ -166,7 +174,7 @@ public class Spreadsheet {
* @return The result calculated. * @return The result calculated.
*/ */
private long calculate(String formula) throws ArithmeticException { private long calculate(String formula) throws ArithmeticException {
System.out.println(formula); //System.out.println(formula);
Matcher m = Pattern.compile("([A-Z][0-9]*)|[-\\+\\*/]|[0-9]*").matcher(formula); Matcher m = Pattern.compile("([A-Z][0-9]*)|[-\\+\\*/]|[0-9]*").matcher(formula);
@ -179,12 +187,11 @@ public class Spreadsheet {
} }
} }
int ersteZahl = Integer.parseInt(get(zahlen.get(0)));
int ersteZahl = Integer.parseInt(get(zahlen.get(0)));
int zweiteZahl=0; int zweiteZahl=0;
for (int i = 0; i < zahlen.size(); i+=2) { for (int i = 0; i < zahlen.size()-2; i+=2) {
if(i<zahlen.size()-2) {
String operant=zahlen.get(i+1); String operant=zahlen.get(i+1);
zweiteZahl=Integer.parseInt(get(zahlen.get(i+2))); zweiteZahl=Integer.parseInt(get(zahlen.get(i+2)));
@ -206,10 +213,7 @@ public class Spreadsheet {
break; break;
} }
} }
}
System.out.print(ersteZahl);
System.out.println(" ");
return ersteZahl; return ersteZahl;
} }