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

Java,If,4 zmienne. wyszukaj najwieksza liczbe

VPS Starter Arubacloud
+1 głos
2,316 wizyt
pytanie zadane 24 stycznia 2018 w Java przez braciak Nowicjusz (130 p.)
edycja 24 stycznia 2018 przez braciak

Witam, jak za pomoca funkcji warunkowej if w jezyku java wybrac najwieksza liczbe z grona czterech roznych?

Jestem poczatkujacy i wymyslilem na razie cos takiego, lecz nie wiem czy ma to sens bytu:

public class main {

    public static void main(String[] args) {


        int x = 100;
        int y = 10;
        
        int a = x + y;
        int b = x - y;
        int c = x * y;
        int d = x / y;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);

if (a>b){
    if(a>c){
        if(a>d){System.out.println("a");}

    }
    if(b>c) {
        if (b > d) {
            System.out.println("b");
        }
    }
        if(c>d){System.out.println("c"); }
        if(d>c){System.out.println("d");}

}



    }
}

4 odpowiedzi

+1 głos
odpowiedź 26 stycznia 2018 przez Mikrokontroler xD Stary wyjadacz (13,500 p.)

ło Panie nie tędy droga.

Możesz wykorzystać API Javy po to ktoś to napisał żeby z tego korzystać

Integer max = Collections.max(Arrays.asList(1, 2, 10, 4, 5, 6));

w Twoim przypadku


Integer max = Collections.max(Arrays.asList(a,b,c,d));
komentarz 26 stycznia 2018 przez Wiciorny Ekspert (269,100 p.)
no ale powiedzmy, że zadanie wymaga użycia proceduralnego algorytmu :D bez bibliotek :), niemniej jednak 'ify są tu zbędne' można wyrażeniem warunkowym, względnie trójargumentowym.
komentarz 27 stycznia 2018 przez Mikrokontroler xD Stary wyjadacz (13,500 p.)
Przecież doskonale wiesz że if się do tego zadania nie nadaje. Bo co jakby było do porównania 20liczb

20 ifów i do tego z 20warunkami różniące się tylko 1 znakiem. Tu się kłania zasada DRY (dont't repeat yourself).

No ale jak ktoś już bardzo chce to dużo lepszym rozwiązaniem jest utworzenie tablicy z tych a,b,c,d dodać zmienna pomocniczą

I w pętli porównywać każdy kolejny element czy nie jest większy od poprzedniego.

A jeśli nie chce tablicą to można napisać funkcję z operatorem wieloargumentowym (...) ( co też jest w pewnym sensie tablicą) i wysłać kolejno liczby jak w tym moim przykładzie wyżej.

Funkcja oczywiście będzie działać tak samo jak ta pętla wyżej

Wiem że autor się dopiero uczy Ale to nie znaczy że nie może poznać standardowego API  w procesie nauki.

Cała reszta mu wejdzie w krew z biegiem czasu Ale myślę że warto wiedzieć że ktoś już dawno rozwiązał takie problemy.

Ja najpierw poznałem mechanizmy w javie pętla ify klasy i dopiero coś później kodowalem więc może dlatego tak myślę.
komentarz 27 stycznia 2018 przez Wiciorny Ekspert (269,100 p.)
Tak, ale zrozum: że czasem " głupio bądź głupio" masz żądanie wykonania zadania - proceduralnego bez  użycia funkcji języka obiektowego w Javie. I takie zadanie dawniej miałem nawet :D na  kwalifikacjach do pracy jako programista strukturalny, swoją drogą nie wiem po co to komu... no ale :D
komentarz 27 stycznia 2018 przez Mikrokontroler xD Stary wyjadacz (13,500 p.)
Z całym szacunkiem ale gdybym miał takie zadanie na kwalifikacjach w taki sposób to bym się głęboko zastanowił czy chce tam pracować. Jeżeli już na wstępie akceptowane są złe praktyki ;p.

Firmę powinno interesować rozwiązanie zadania w sposób najbardziej efektywny i w jak najkrótszym czasie i dodatkowo żeby było zrozumiałe dla reszty. Ja np bym nie zrozumiał tak skomplikowanego ifa bez kilku minut a tak widzę metodę Max i już wiem o co chodzi w ułamek sekundy

A z API i tak warto się zapoznać żeby przynajmniej wiedzieć że coś takiego jest   :)
komentarz 27 stycznia 2018 przez Wiciorny Ekspert (269,100 p.)
To widać, że mało programujesz :D...  są takie " działy, stanowiska pracy" jak FUNCTIONAL PROGRAMMING :)  np.

Software Developer (Functional Programming).

To jest programowanie oparte o sam algorytm i proceduralne programowanie. Więc tam nie ma mowy o stosowaniu obiektowości, a są też firmy- gdzie stosują do tego właśnie Javę- mimo że nie jest to język proceduralny
komentarz 27 stycznia 2018 przez Mikrokontroler xD Stary wyjadacz (13,500 p.)
I chcesz mi wmówić że się nie używa obiektowości w programowaniu funkcyjnym? To bardzo ciekawe co mówisz.

Masz najprostszy przykład z podręcznika

(String x,String y) -> x.length() - y,length()

Używam standardowego API? Używam. Czym jest String ? klasa czyli używam obiektowości? Używam.

Tak właściwie po co jest ta dyskusja ?

Ten przykład co pokazałem też przecież można funkcyjne wykorzystać.

Czy nie wiedziałeś ?
komentarz 27 stycznia 2018 przez Wiciorny Ekspert (269,100 p.)
nie korzystamy wtedy z pracy na  Stringu, tylko zmiennych  i kontenerów tablicowych typów prostych?

(String x,String y) -> x.length() - y,length()

a gdzie tu masz "programowanie funkcjonalne"? To nie jest FP :) metod length można korzystać jeśli są one implementowane przez ciebie. Stringa samemu też możesz zdefiniować jako enum :) lub strukturę to wtedy okej
komentarz 27 stycznia 2018 przez Mikrokontroler xD Stary wyjadacz (13,500 p.)
No przecież masz jak byk lambę a lambda to wyrażenie funkcyjne.

Wysyłasz tą funkcję do jakieś metody i ta metoda już wie co zrobić z tą funkcją chyba że napiszesz coś swojego i określisz co ma robi c. Metoda length jest metodą klasy Strign dla Twojej wiadomośc w pakiecie java.lang

Chyba poprostu nie znasz Javy a udajesz znawcę I speca od wszystkiego.

Albo już wiem dlaczeo pracujesz w takiej firmie o której wspomniałeś.

Poczytaj trochę wróć i odpowiedź dopiero a nie tracisz czas na bezproduktywną dyskusję.
komentarz 27 stycznia 2018 przez Wiciorny Ekspert (269,100 p.)
może to Ci pomoże

https://softwareengineering.stackexchange.com/questions/65116/structured-programming-versus-oo-programming

6 lat pracuje jago programista :) dobrze pouczę
0 głosów
odpowiedź 24 stycznia 2018 przez Aisekai Nałogowiec (42,190 p.)
if(pierwsza>=druga && pierwsza>=trzecia &&pierwsza>=czwarta) <=> pierwsza największa. I tak dla każdej następnej.
0 głosów
odpowiedź 24 stycznia 2018 przez Mateusz51 Nałogowiec (28,180 p.)
Ja na twoim miejscu zrobił bym sobie funkcje max(a int, b int) która zwraca Ci większa z liczb.

A następnie wywołał takiego potworka max(a, max(b, max(c, d)))
0 głosów
odpowiedź 26 stycznia 2018 przez Wiciorny Ekspert (269,100 p.)
http://naukajavy.pl/kurs-jezyka-java/89-wyrazenie-warunkowe

to Ci fajnie może uprościć działanie kodu, rezygnując z niepotrzebnych ifów :) zawsze zwracając większa liczbe, mniej porównań

Podobne pytania

0 głosów
1 odpowiedź 1,800 wizyt
pytanie zadane 18 listopada 2019 w Python przez lijke Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 422 wizyt
pytanie zadane 25 października 2020 w Java przez Poczatkujacy011 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 767 wizyt
pytanie zadane 21 lipca 2020 w Java przez T100 Obywatel (1,450 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...