Wpis z mikrobloga

@sorhu: .gitignore wydaje mi się spoko, jest tak wygenerowany by pousuwać elementy zależne od platformy programisty.

Ja bym podbił sourceCompatibility w gradlu do 1.8.

Kolejnym usprawnieniem jakie bym zrobił w twoim kodzie to rozbiłbym maina na kilka funkcji o niezależnych zadaniach np:
- String wczytajLinie() // Scanner może być póki co jako stała statyczna wartość w klasie
- Operacja parsujLinie(String linia) // gdzie Operacja to nowa klasa zawierająca (n1, operator, n2)
  • Odpowiedz
@slucham-psa-jak-gra: nikt tak nie pisze, nie powinieneś wymagać żeby użytkownik wpisywał input w jeden konkretny sposób. parę wskazówek:

- ignoruj białe znaki (spacje, tabulatory itd.) w inpucie np. 1+1, 1 + 1, 1+ 1; dają ten sam wynik
- co jeśli użytkownik wpisze niepoprawny input? np. "1+", narazie zakładasz że input ma co najmniej 3 znaki
- używaj doubli zamiast long
  • Odpowiedz
@slucham-psa-jak-gra:
throw new CalculatorException(new IllegalArgumentException("Illegal number of tokens"))
Usuń ten illegal argument. Nie złapałeś tego wyjątku. Nie jest więc on tu potrzebny.

Po prostu:
throw new CalculatorException("Illegal number of tokens")

A teraz.
Wyrzuć if else przy operatorach.
Użyj switcha.

A jeszcze lepiej:
Stwórz interfejs reprezentujący operację. Ma przyjąć dwa double i zwrócić wynik.

Stwórz implementacje.

Stwórz klasę, która zamienia string (operator) na operację.
  • Odpowiedz