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

1919

    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. Purra sössi kaiken 2 vuodessa, itkee nyt Marinin perään

      Nyt on taas sama vanha itkuvirsi, kun ei omat taidot riittänee. Kaikki on taas muiden syytä. No miten sen "Tunnin juna"
      Maailman menoa
      75
      8937
    2. Ikuiset kaipaajat

      Miksette vaan mene sen kaipauksen kohteen luokse ja puhu sille suoraan? Mitä järkeä on kaipailla jotain puolituttua vuo
      Ikävä
      154
      5604
    3. Nyt se on selvitetty: Sanna Marinin hallitus lisäsi menoja 41 miljardilla

      ”vasemmistohallitus oli katastrofaalisen huono”, sanoo kokoomus. Sanna Marinin (sd.) hallituksen tekemät menolisäykset
      Maailman menoa
      128
      5054
    4. Orpon hallitus runnoi Tunnin junan ilman tarvetta

      Näinkö valtiontaloutta hoidetaan? Siis asiantuntijoidenkin aikoja sitten kannattamattomaksi laskema Tunnin juna tehdään
      Maailman menoa
      18
      3903
    5. Riikka ottaa miljardi euroa EU:n yhteisvelkaa Suomelle

      Niin kääntyi irvipersun takki taas, vaikka vaalilupauksissa oli ettei yhteisvelkaa Suomi enää koskaan ota. No nyt otti m
      Maailman menoa
      85
      3480
    6. Lindtman ylivoimainen suosikki pääministeriksi

      Lindtmania kannattaa pääministeriksi peräti 50 prosenttia useampi kuin toiseksi suosituinta Kaikkosta. https://www.ilta
      Maailman menoa
      53
      3379
    7. Veronmaksajat kustantavat yrittäjien eläkkeitä jo yli 500 miljoonalla

      Suomalaista yrittäjää ei kommunistista erota. Aktiivisen "yrittämisen" maksattaa yritystukina yhteiskunnalla, ja vieläpä
      Yrittäjyys
      40
      2731
    8. En tiedä ymmärrätkö

      Kuinka paljon merkitset mulle. Näet minut minuna etkä silti käännä selkääsi. Tökit jatkuvasti kepillä jäätä ja menit ehk
      Ikävä
      10
      2701
    9. Sanna Marin - Maailman paras talousasiantuntija?

      PersKeKoa pukkaa? https://www.hs.fi/politiikka/art-2000011636623.html
      Maailman menoa
      58
      2676
    10. Kenenkä halli se on tulessa nelostiellä

      11 yksikköä paikalla
      Pyhäjärvi
      24
      1747
    Aihe