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ä
      103
      2840
    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
      251
      1993
    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ä
      120
      1942
    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
      136
      1668
    5. huono vai hyvä juttu

      Miten ulkopuoliset reagoisivat jos olisit kaivattusi kanssa yhdessä....?
      Ikävä
      93
      1420
    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
      25
      1014
    7. 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ä
      37
      974
    8. Mitä mielestäsi on aito

      rakkaus? Miten sen kuvailisit?
      Ikävä
      96
      968
    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
      828
    10. Voisiko kaivattusi tehdä jotain mitä

      Et voisi antaa anteeksi
      Ikävä
      43
      804
    Aihe