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

Java/Spring/REST/web service

Object Storage Arubacloud
0 głosów
233 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,280 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ź 168 wizyt
pytanie zadane 5 kwietnia 2019 w Java przez Piotr Kusnierkiewicz Użytkownik (670 p.)
0 głosów
1 odpowiedź 206 wizyt
pytanie zadane 26 czerwca 2019 w Java przez SztyJkmajster Z Pols Nowicjusz (240 p.)
0 głosów
2 odpowiedzi 457 wizyt
pytanie zadane 25 sierpnia 2019 w Java przez Szpryca Użytkownik (580 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...