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

1768

    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. Olisiko sinulla mitään toiveita?

      Miten sinä toivoisit minun sinua lähestyvän? Mitään mitä olisi tosi hyvä tietää ennen sitä? Jos ei sen kummempia, niin
      Ikävä
      104
      2892
    2. Turun tunnin juna toteutetaan

      Köyhiltä viedään mutta tunnin juna Turkuun viedään läpi. Puhaltakaa PS nyt tämä poikki! https://www.hs.fi/politiikka/ar
      Perussuomalaiset
      294
      2135
    3. Oletko kertonut tästä

      Meidän oudosta jutusta kenellekään? Olen kertonut ystävälleni, että olet saanut minut sekaisin…, mutta tästä hän ei tied
      Ikävä
      122
      2005
    4. Miksi miehet kohtelevat mua huonosti

      Oon nyt tapaillut kolmea ihmistä. Ensimmäisen kanssa nähtiin kolme kertaa, ja meidän oli tarkoitus mennä leffaan tiettyn
      Sinkut
      138
      1827
    5. huono vai hyvä juttu

      Miten ulkopuoliset reagoisivat jos olisit kaivattusi kanssa yhdessä....?
      Ikävä
      93
      1430
    6. Poliisi etsii Leif Lindemannia

      https://www.mtvuutiset.fi/artikkeli/poliisi-etsii-leif-lindemania-julkaisi-kuvan/8982310#gs.cec6zf Onko nähty jo tarhar
      Kokkola
      26
      1096
    7. Mitä mielestäsi on aito

      rakkaus? Miten sen kuvailisit?
      Ikävä
      102
      1029
    8. Hitsi että olet tyylikäs!

      Sinulla on upea näkemys ja oikeaa värisilmää. Hyvä etten melkein pudonnut polvilleni eteesi kun hämmästytit minut jällee
      Ikävä
      38
      1027
    9. Ensi kerralla aion ottaa sinun kanssa

      Tuijotus kisan ja mitäs sitten tapahtuu jää nähtäväksi 🤩😃 Voi olla vähän hankalaa jos muita ihmisiä mutta odotelkoot s
      Ikävä
      46
      848
    10. Voisiko kaivattusi tehdä jotain mitä

      Et voisi antaa anteeksi
      Ikävä
      48
      846
    Aihe