Miten virheelliset inputit tarkistetaan?

JunioriJavaisti

Opettelin alkeet Pythonilla ja nyt haluaisin opetella Javaa. Pythonissa oli helppo palauttaa None jos jokin meni pieleen, vaikka

def jaa(x,y):
if y==0 return None
return x/y

Mutta miten sama tehdään Javalla? Eikös metodeilla ole aina paluutyyppi, jolloin

double jaa(double x,double y)

palauttaa aina reaaliluvun eikä koskaan null-arvoa? Onko siis kaikki virhetilanteet katsottava ennen kuin metodia kutsutaan?

7

1744

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • phytonlopunagetti

      Muuttamalla ohjelman tietoisuuden tason sylintereitä. Okey ?

    • Pitää heittää virhe:
      throw new OmaKeksimasiLuokkaException("nyt tuli huonoa inputtia!");

    • jaavaguru

      joo, java on syvältä, 8 vähän vähemmän syvältä, jossa voit palauttaa Optional<Double>

      Optional<Double> jaa (double x, double y){
      if(y == 0D){
      return Optional.empty();}
      return Optional.of(x/y);
      }

      • dbltrbl

        Millä todennäköisyydellä double on tasan nolla?


      • jaavaguru
        dbltrbl kirjoitti:

        Millä todennäköisyydellä double on tasan nolla?

        Niin joo, doublen jakotulos nollalla palauttaa NaN:n eikä heitä poikkeusta kuten int:llä jaettessa


      • dbltrbl kirjoitti:

        Millä todennäköisyydellä double on tasan nolla?

        Eihän likuluku voi koskaan olla nolla?


    • Tuon voi hoitaa ilman poikkeuksiakin. Ajattelisin, että muita poikkeustilanteita ei voi tulla, paitsi jos jakaja on 0 tai pienempi, tai sitten jaetaan kokonaislukuja. Jos jakometodi palauttaa Object-tyypin, voi hyvin palauttaa Stringin, että "Nollalla ei voi jakaa", ja sitten kierrättää kokonaisluvut ylikuormitetun metodin avulla alkuperäiseen jakometodiin siten, että ylikuormitetussa divide(int,int)-metodissa tehdään pakotettutyyppiimuunnos doubleksi ensin.

      Pistin esimerkkikoodini jakoon Githubiin, tarkastele sitä ja unohda poikkeuksien käyttö tässä tilanteessa.

      https://github.com/jjsume/Java-stuff/blob/master/Koknaisluku.java

      Ajattelin vielä laajentaa tuota esimerkkiä siten, että jos luvut syöttää Stringeinä, niin homma toimii samalla tavalla. Tästä voisin kirjoitta vaikka tietokoneblogiini, joka sijaitsee osoitteessa www.tietokoneblogi.net ihan artikkelinkin näin sunnuntai-päivän ajankuluksi.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. En ole rakastunut

      Tai ihastunut sinuun. Kiinnostuin kyllä heti koska erotut massasta.
      Ikävä
      413
      4299
    2. Miksi suomalaisia vainajia säilytetään kylmäkonteissa ulkona? Näin kuolleita kohdellaan Suomessa

      Suomesta ei löydy enää tilaa kuolleille. Tänä päivänä vainajia säilytetään ympäri maata ulkona kylmäkonteissa. Kontit
      Maailman menoa
      236
      2110
    3. Olen ärtynyt koska

      minulla on tunteita sinua kohtaan. Tunteita joita en voi ilmaista. Kaipaan kaikkea sinussa. Siksi olen välillä hankala.
      Ikävä
      68
      1560
    4. Suomalaiset marjat loppuvat

      Suomalaiset marjat mätänevät metsään, koska ulkomaalaiset, lähinnä thaimaalaiset poimijat ovat huolehtineet suomalaisten
      Maailman menoa
      158
      1381
    5. Hallitus korottaa yleisen arvonlisäveron 25,5 prosenttiin

      Yleisen arvonlisäveron kiristäminen 1,5 prosenttiyksiköllä on hallituksen järein toimi kehysriihessä. Se voi tuoda valti
      Perussuomalaiset
      253
      1070
    6. Yhteiskuntaa hyväksi käyttäjät

      Kyllä täällä Suomussalmellakin osaavat käyttää näitä Suomen etuja hyväksi. Vuokrataan ns. asunto lapselle että saa asu
      Suomussalmi
      67
      1057
    7. Joku tukeva täti syyttää suomalaisia rasisteiksi Hesarissa

      ”Kaikki valkoiset ihmiset Suomessa ovat kasvaneet rasistiseen ajatteluun”, sanoo Maija Laura Kauhanen: https://www.hs.
      Maailman menoa
      167
      1035
    8. Mitä teen väärin?

      Alkaa pikku hiljaa tympäsemään ainainen pakkien saanti. Eka ennen kun nähdään, miehet ovat kiinnostuneita viestittelemää
      Sinkut
      136
      1033
    9. Puhutko toisista ihmisistä

      pahaa, jotta näyttäytyisit itse jotenkin paremmassa valossa?
      Ikävä
      117
      933
    10. Haluaisin tietää

      mikä saa sinut tuntemaan olosi rakastetuksi. Ja sitten haluaisin mahdollisuuden tehdä juuri niin. 💔
      Ikävä
      51
      908
    Aihe