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

1989

    Vastaukset 7

    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. Miksi et halua kaivattusi

      kanssa suhteeseen? Onko jokin syy vaikka rakastat häntä?
      Ikävä
      145
      1404
    2. 74
      1254
    3. Carunan hinnat

      Yks proffa vauuttaa, ettei Caruna voi noin vain nostaa hintoja koska suomen laki kieltää, toinen proffa sanoo että Carun
      Maailman menoa
      105
      1016
    4. Mikä sun kaivatussa on se miksi ihastuit

      ja ikävöit? Eli se jokin asia, mikä aiheutti tunteen, että tuossa on sitä jotain? Meinasitko tehdä asialle jotain vai ka
      Ikävä
      50
      945
    5. Koetko vielä et

      Olen elämäsi rakkaus?
      Ikävä
      78
      832
    6. Joko uskallat.

      Huomenna nähdään.
      Ikävä
      45
      811
    7. Kunnan päätie ja sen lähialueet

      Arvon hyrynsalmelaiset. Tätä palstaa on näin Ukkohallan mökkiläisena ihan viihteellistä lukea. Milloin teitä ahdistaa la
      Hyrynsalmi
      40
      808
    8. Olen tumma ja tulinen

      Ja vielä suora - en ollut sinua varten. n to m
      Ikävä
      115
      678
    9. Oletko tullut siihen

      Tulokseen ettet saa minua
      Ikävä
      67
      673
    10. Mitä kysyisit

      Mihin haluaisit vastauksen häneltä eli mitä kysyisit?
      Ikävä
      77
      663
    Aihe