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

1815

    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


      • jerzunposti
        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. Kyllä tiedän että ajattelet

      Niin ajattelen minäkin. Sinulla tuskin on yhtään sen helpompi olla kuin minullakaan tällä hetkellä.. Toisaalta ehkä tä
      Ikävä
      19
      6838
    2. Hyvää yötä S******

      Ja parempaa uutta vuotta 😉
      Ikävä
      5
      1064
    3. Martina, yksityishenkilön ex vihaa häntä

      Seiska ja IL kirjoittaa, että yksityishenkilön ex on veemäinen ja vihaa Martinaa. Onneksi ex on 13000 km päässä.
      Kotimaiset julkkisjuorut
      192
      947
    4. Odotatko sä

      Ensi vuotta ja sitä että näet kaivattua?
      Ikävä
      36
      878
    5. YlE aloitti sateenkaari messuilla kirkkovuoden

      Siinä kirkon luopumus paljaimmillaan.
      Luterilaisuus
      280
      866
    6. Parempaa uutta

      vuotta dear. Kun vuosi vaihtuu, olet ensimmäisenä mielessäni. Uusi vuosi ei pyyhi pois vanhan vuoden tunteita.
      Ikävä
      47
      861
    7. Yksi elämän pahimmista virheistä

      Olla tekemättä mitään, jos on jostakin oikeasti kiinnostunut ja jää vain miettimään, sekä kaipaamaan. Sekin parempi, jo
      Ikävä
      29
      797
    8. Ensi vuonna

      Toivon että meistä tulee vähintään ystäviä. Olemme samankaltaisia ja ymmärrämme toisiamme. Haluaisin oppia tuntemaan sin
      Ikävä
      20
      791
    9. Vietätkö uuden

      Vuoden miten tai kenen kanssa?
      Ikävä
      63
      762
    10. Ikävän väkivaltaiseksi mennyt Kannuksessa,.

      Meno Monossa, , kesken rauhallisen illan , entinen portsari tulee vetään tuntematonta asiakasta turpaan. Räyhää ja haa
      Kannus
      36
      756
    Aihe