Inteligenty Kalkulator

0

Witam.
Za cel postawiłem sobie tworzyć inteligenty kalkulator. Chodzi o to że użytkownik wpisuje wartości, a kalkulator sam wie co może z nich obliczyć i to oblicza.
Rozwiązałem ten problem, na zasadzie sprawdzania które pola mają wpisaną wartość. Lecz pojawia się kolejny problem, gdy już wszystko jest obliczone i użytkownik zmieni jakąś wartość to system głupieje bo wszystkie pole mają wartość i wykonuje wszystkie obliczenia.
Wykorzystałem ten system w mojej aplikacji https://play.google.com/store/apps/details?id=com.stasbar.kalkulatorspalania
A tutaj kod:

        if (!averageFuelConsumption.equals("")&&!distance.equals("")){
            averageFuelConsumption = Double.parseDouble(averageFuelConsumption);
            distance = Double.parseDouble(distance);

            valueUnits = averageFuelConsumption*distance/100;
            view.update(4,valueUnits);
        } else if (!valueUnits.equals("")&&!distance.equals("")){
            distance = Double.parseDouble(distance);
            valueUnits = Double.parseDouble(valueUnits);

            averageFuelConsumption=valueUnits*100/distance;
            view.update(2,averageFuelConsumption);
        } else if (!valueUnits.equals("")&&!averageFuelConsumption.equals("")){

            averageFuelConsumption = Double.parseDouble(averageFuelConsumption);
            valueUnits = Double.parseDouble(valueUnits);

            distance = valueUnits*100/averageFuelConsumption;
            view.update(3,distance);
        } if (!valueUnits.equals("")&&!pricePerUnit.equals("")){

            pricePerUnit = Double.parseDouble(pricePerUnit);
            valueUnits = Double.parseDouble(valueUnits);

            expense = pricePerUnit*valueUnits;
            view.update(5,expense);
             // TA LINIA WYKONUJE SIE ZAWSZE JESLI WSZYSTIE POLA SA WPISANE
        } else  if (!valueUnits.equals("")&&!expense.equals("")) {
            expense = Double.parseDouble(expense);
            valueUnits = Double.parseDouble(valueUnits);

            pricePerUnit = expense / valueUnits;
            view.update(1,pricePerUnit);
        } else if (!pricePerUnit.equals("")&&!expense.equals("")) {
            pricePerUnit = Double.parseDouble(pricePerUnit);
            expense = Double.parseDouble(expense);

            valueUnits = expense / pricePerUnit;
            view.update(4,valueUnits);
        }

Ma ktoś jakiś pomysł jak można rozwiązać taki problem inaczej niż czyszczenie wszystkich pól po obliczeniu ?

0

Chodzi Ci o kalkulator spalania, chyba najprostsza będzie tablica haszująca <string,double>, nazwa czynosci i kalorie, jako słownik spalania i druga w postaci <string,ilosć> nazwa czynności ilość wykonań. Najtrudniej będzie wygodny gui zrobic

0

To jest kalkulator spalania paliwa. I jest więcej zmiennych

0

Spalania^^ no tak, i dlatego nie powinno się pisać ani w nocy ani po pijaku ;)
Chodzi Ci o to że wszystkie jak wszystkie pola są zapełnione to i ma coś policzyć to robi się dziwnie?

Jeśli tak to:

Po pierwsze zamiast "Parsowac i equlować" w if'ach tysiąc razy, na początku metody użyj TryParse dla wszystkich textbox'ów i zapamiętaj gdzie się udało. (coś a'la bool distanceHasValue, pricePerUnitHasValue ect.)

Nałóż TextBox'a i Labela na siebie*, Wyniki obliczone wprowadzał byś do Label'a np. kolorem zielonym. Kliknięcie(czyt. wpisanie czegoś) na textbox'a chowało by label'a a wartość w prowadzona była by koloru np. czarnego, a wykasowanie go włączało label'a.
Chowanie i pokazywanie labelek, najlepiej zrobić w osobnej 5? parometrowej metodzie i wstawić zaraz pod TryParse.

Pod spodem na pisz if'y na te boole odmień przez wszystkie przypadki, wykonaj obliczenia i wprowadź wyniki.

*Nie wiem w czym to robisz i czy tak się da, alternatywnie możesz napisać tablice zapamiętującą które pola są wpisane a które obliczone

1 użytkowników online, w tym zalogowanych: 0, gości: 1