Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package eg.edu.alexu.csd.oop.calculator;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.PrintWriter;
- import java.util.Scanner;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class operation implements Calculator {
- static int theEnd=0;
- private double firstValued;
- private double secondValued;
- private int operator; // 1 for add 2 for substruction 3 for multiplication 4 for division
- private String result;
- private Boolean error;
- private String errorM = "";
- private String cuF;
- //private static String[] LastArray = new String[5];
- private static String[] ArrayHere = new String[5];
- private static int sizeArrayHere=0;
- // private static int sizeOfOpreation;
- operation() {
- operator = 0;
- result = "";
- error = false;
- // for (int i = 0; i < 5; i++) LastArray[i] = "";
- // sizeOfOpreation=0;
- //load();
- }
- @Override
- public void input(String s) {
- String sp = "^(-?[0-9]*?|[0-9]*?\\.[0-9]*?)([+\\-*/])(-?[0-9]*?|[0-9]*?\\.[0-9]*)(=.)?";
- Pattern pattern = Pattern.compile(sp);
- Matcher matcher = pattern.matcher(s);
- if (matcher.matches()) {
- cuF = s;
- String v = matcher.group(1);
- String v2 = matcher.group(2);
- String v3 = matcher.group(3);
- if(v.length()==0||v3.length()==0){
- error = true;
- errorM = "Wrong Input";
- return;
- }
- String p2 = "[0-9]*?\\.[0-9]*?";
- firstValued = Double.parseDouble(v);
- secondValued = Double.parseDouble(v3);
- switch (v2) {
- case "+":
- operator = 1;
- break;
- case "-":
- operator = 2;
- break;
- case "*":
- operator = 3;
- break;
- case "/":
- if ( secondValued == 0) {
- error = true;
- errorM = "Can't divide by 0";
- } else operator = 4;
- break;
- }
- } else {
- error = true;
- errorM = "Wrong Input";
- }
- }
- @Override
- public String getResult() {
- if (!error) {
- double r = op(firstValued, secondValued);
- result=Double.toString(r);
- sA();
- // save();
- // save();
- return result;
- } else {
- return errorM;
- }
- }
- private void sA() {
- if(sizeArrayHere<5){
- ArrayHere[sizeArrayHere++]=cuF;
- // System.out.println(ArrayHere[sizeArrayHere-1]);
- return;
- }
- for(int i=0;i<4;i++){
- ArrayHere[i]=ArrayHere[i+1];
- }
- ArrayHere[4]=cuF;
- }
- // public int getSize(){
- // return sizeOfOpreation;
- // }
- // public String getElement(int x){
- // return LastArray[x-1] ;
- // }
- private double op(double firstValued, double secondValued) {
- if (operator == 1) return firstValued + secondValued;
- if (operator == 2) return firstValued - secondValued;
- if (operator == 3) return firstValued * secondValued;
- else return firstValued / secondValued;
- }
- @Override
- public String current() {
- if(theEnd==-1)return null;
- return LastArray[theEnd];
- }
- @Override
- public String prev() {
- if(theEnd==0||theEnd==-1)return null;
- return LastArray[--theEnd];
- }
- @Override
- public String next() {
- if(theEnd==sizeOfOpreation-1||theEnd==-1)return null;
- return LastArray[++theEnd];
- }
- @Override
- public void save() {
- // if(sizeOfOpreation<5){
- // LastArray[sizeOfOpreation++]=currenthere();
- // }else {
- // for(int i=0;i<4;i++){
- // LastArray[i]=LastArray[i+1];
- // }
- // LastArray[4]=currenthere();
- // }
- PrintWriter printWriter = null;
- try {
- printWriter = new PrintWriter(new File("read.txt"));
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- for(int i=0;i<sizeArrayHere;i++) {
- printWriter.println(ArrayHere[i]);
- }
- printWriter.flush();
- }
- private String currentheree() {
- return cuF+"="+result;
- }
- @Override
- public void load() {
- theEnd=0;
- sizeOfOpreation=0;
- try {
- Scanner scanner = new Scanner(new File("read.txt"));
- int i=0;
- while (scanner.hasNextLine()) {
- String line = scanner.nextLine();
- if(!line.matches(".*?[0-9].*?"))break;
- LastArray[i++]=line;
- sizeOfOpreation++;
- theEnd++;
- }
- theEnd--;
- } catch (FileNotFoundException e) {
- System.out.println(e.getMessage());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement