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

1920

    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. NO NIIN! Nyt on sitten prinsessa Sannan sädekehä lopullisesti rikottu

      narsistia ei kannata enää kuin ne fanaattisimmat kulttilaiset, jotka ovat myös sitä Suomen heikkoälyisintä sakkia. Kun
      Maailman menoa
      107
      4609
    2. Kansa haluaa Marinin hallituksen takaisin ja Orpon pois

      Suomen kansa on nyt ilmoittanut millaisen hallituksen Suomi tarvitsee. "Suomalaisten suosikki seuraavaksi hallituspohja
      Maailman menoa
      173
      4385
    3. Mikä piirre kaivatussa on sinulle se juttu?

      Tunnetko kaivattuasi vai onko hän haavekuva, jota et edes tunne? Joskus tää asia ei ole niin selvää.
      Ikävä
      94
      1730
    4. Tylsille treffeille

      Hiljaisen ukon kans nuotiolle?
      Tunteet
      403
      1661
    5. HihhuIi-Päivi täpinöissään Viktorin tapaamisesta

      Eiköhän nyt kaikille ole vihdoin selvää kenen joukoissa tämäkin putinisti seisoo. https://www.iltalehti.fi/politiikka/a
      Maailman menoa
      33
      1423
    6. Ensitreffit Matti ei vaikene enää - Rehellinen tilitys epäonnistuneesta suhteesta Elisaan

      Häntä pystyyn, Matti! Olet mahtava tyyppi ja varmasti “se oikea” löytyy vielä! Elisan kanssa ei nyt vaan sitten natsann
      Ensitreffit alttarilla
      6
      1109
    7. Upeeta! Rauha tulee pian!

      Hieno suunnitelma ja se on toteutumassa alle kahdessa viikossa. Jihuu! Tätä on odotettukin, nyt se tulee! https://www.is
      Maailman menoa
      353
      1100
    8. Mitä hyvää olet

      aiheuttanut kaivatullesi?
      Ikävä
      67
      989
    9. Minkä lempinimen olet

      antanut kaivatullesi?
      Ikävä
      56
      964
    10. Miksi et halua

      Seksiä sen kanssa jota rakastat? Vai ajatteletko että hän ei halua?
      Ikävä
      92
      938
    Aihe