• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java/Spring/REST/web service

42 Warsaw Coding Academy
0 głosów
319 wizyt
pytanie zadane 24 czerwca 2019 w Java przez SztyJkmajster Z Pols Nowicjusz (240 p.)
edycja 24 czerwca 2019 przez SztyJkmajster Z Pols

Siemanko

Próbuję napisać coś swojego. Aplikacja ma umożliwiać dodawanie produktów spożywczych z parametrami, co już zrealizowałem, dalej celem jest sumowanie wartości odżywczych, porównywanie z dziennym zapotrzebowaniem etc..)

Problem leży w wybieraniu produktów, do połączenia w posiłek. Otóż zastanawiam się, czy jest jakaś alternatywa dla funkcji o określonej liczbie opcjonalnych parametrów, co z góry narzuca pewne ograniczenie na posiłek. Tutaj mam taką prowizorkę, ale nie podoba mi się to na tyle że póki co nie rozwijam jej dalej

@RequestMapping("/add")
public Integer adding(@RequestParam("i") Long index,
                      @RequestParam("i2") Long index2,
                      @RequestParam(value="i3", required = false, defaultValue = "0") Long index3,
                      @RequestParam(value="i4", required = false, defaultValue = "0") Long index4,
                      @RequestParam(value="i5", required = false, defaultValue = "0") Long index5,
                      @RequestParam(value="i6", required = false, defaultValue = "0") Long index6
){
    Integer sum = null;


   Integer i1 = productManager.findById(index).get().getCalories();
  // Integer x = first.getCalories();
   Products second = productManager.findById(index2).get();
   Integer i2 = second.getCalories();

   Integer i3,a,b,c;
   if (index3==0){
       i3=0;
   } else {
       Products thrid = productManager.findById(index3).get();
       i3 = thrid.getCalories();
   }
    sum= i1+i2+i3;
    return sum;
}


 Ma ktoś jakąś inną, ładniejszą koncepcję..? 

komentarz 2 września 2021 przez billy11 Nowicjusz (100 p.)
Good If you really like to learn more about java and python.

I recommend you get skills from frontier technology. Link below

https://frontiertechnologyinstitute.com/python-programming-certification/

2 odpowiedzi

+2 głosów
odpowiedź 25 czerwca 2019 przez mbabane Szeryf (79,260 p.)
wybrane 26 czerwca 2019 przez SztyJkmajster Z Pols
 
Najlepsza

Skorzystaj z listy/tablicy na wejściu.

I jedna ważna rzecz, odnośnie użycia Optional, ponieważ to zdaje się jest operacja własnie na tym obiekcie:

productManager.findById(index).get().getCalories();

Tak nie należy robić. Tzn. nie wolno używać bezpośrednio get, ponieważ może to prowadzić do wyrzucenia wyjątku.

W powyższym przypadku możesz zrobić np. tak:

Integer integer = findProduct()
                     .map(Product::getCalories)
                     .orElse(ZERO);

Ponieważ sumujesz wartości, to jeśli produktu nie udało się znaleźć to powyższa konstrukcja zwróci 0 - 0 jest obojętne w przypadku sumowania (nie zmieni wyniku). A jeśli dany produkt będzie znaleziony to zwróci jego liczbę kalorii (map(Product::getCalories)).

komentarz 26 czerwca 2019 przez SztyJkmajster Z Pols Nowicjusz (240 p.)

Super, wszystko śmiga, a wygląda tak : 

@RequestMapping(value= "/addCalories")
    public String sumCalories(@RequestParam("index") List<Long> ids) {
        Float sumCal = 0F;

        for (Long id: ids) {
            sumCal += productManager.findById(id).map(Product::getCalories).orElse(0F));
        }

        return sumCal+" kcal";
}

Uświadomiłem sobie jednak, że potrzebuję raczej Mapy zamiast Listy. Każda liczba kalorii powinna być wymnożona przez gramaturę. Jeżeli mogę zażądać Mapy, to czy jest to poprawna forma ? 

    public String sumCalories(@RequestParam() Map<Long, Integer> map)

Jeżeli tak, to jak powinno wyglądać żądanie http ? 
 

+3 głosów
odpowiedź 25 czerwca 2019 przez Aisekai Nałogowiec (42,190 p.)
Poszukaj informacji o RequestBody i o Listach/Setach.

Jeżeli chcesz, to możesz owrapowac tą Liste/Set w jakąś klasę, będzie lepiej wyglądać zamiast otrzymywać zwykłej Listy.

Podobne pytania

0 głosów
1 odpowiedź 243 wizyt
pytanie zadane 5 kwietnia 2019 w Java przez Piotr Kusnierkiewicz Użytkownik (670 p.)
0 głosów
1 odpowiedź 250 wizyt
pytanie zadane 26 czerwca 2019 w Java przez SztyJkmajster Z Pols Nowicjusz (240 p.)
0 głosów
2 odpowiedzi 553 wizyt
pytanie zadane 25 sierpnia 2019 w Java przez Szpryca Użytkownik (580 p.)

93,395 zapytań

142,388 odpowiedzi

322,566 komentarzy

62,753 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...