Recent Changes - Search:

Oktatás

* Programozás 2
  + feladatsor
  + C feladatsor
  + Python feladatsor
  + GitHub oldal

* Szkriptnyelvek
  + feladatsor
  + quick link

* levelezősök
  + Adator. prog.
  + feladatsor
  + quick link

teaching assets


Félévek

* 2024/25/1
* archívum


Linkek

* kalendárium
   - munkaszüneti napok '20
* tételsorok
* jegyzetek
* szakdolgozat / PhD
* ösztöndíjak
* certificates
* C lang.
* C++
* C#
* Clojure
* D lang.
* Java
* Nim
* Scala


[ edit | logout ]
[ sandbox | passwd ]

20201104a

Kivételek

Tekintsük az alábbi programot. A program bekér két valós számot, elosztja az elsőt a másodikkal, majd kiírja az eredményt.

import java.util.Scanner;

class ZeroDivisionException extends Exception {
    // így lehet saját Exception osztályt létrehozni
    // Egy ilyen típusú kivételt így tudunk kiváltani:
    //
    // throw new ZeroDivisionException();
}

public class Main
{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);

        while (true)
        {
            System.out.print("1. szám: ");
            double szam1 = scanner.nextDouble();
            System.out.print("2. szám: ");
            double szam2 = scanner.nextDouble();
            double result = szam1 / szam2;
            System.out.printf("Az osztás eredménye: %.2f\n", result);

            System.out.println("-".repeat(10));
        }
    }
}

Feladat

Egészítsük ki a fenti programot úgy, hogy kezeljük le a következő eseteket:

  • Ha a felhasználó nem számot adott meg, akkor finoman tájékoztassuk a program helyes használatáról.
  • A programból CTRL+C-vel vagy CTRL+D-vel lehessen kilépni. Ekkor a program ne produkáljon semmilyen hibaüzenetet.
  • Nullával való osztás esetén informatív hibaüzenet.

Haladjunk lépésenként. Az egyes speciális eseteket egyenként, egymás után kezeljük le.

Hibás input esetén írjuk ki a hibaüzenetet, és a program ismét kérje be mind a két számot!

Tippek

  • A 0-val való osztást tekintsük hibának!
  • A Java API-ban van egy ilyen: Double.isInfinite()
  • Ha hibás input esetén végtelen ciklusba kerülünk úgy, hogy nem tudunk beírni semmit sem, akkor Ctrl+C -vel le tudjuk állítani a programot. A hiba oka az, hogy a hibás input bent maradt az input pufferben. Ezt megpróbálja számmá alakítani, de ha nem megy, akkor kivételt dob, viszont a hibás input a pufferben marad! Újraindul a ciklus, megint nem tudja számmá alakítani, stb. Megoldás: a scanner.next() hívás ki fogja venni a tokent az input pufferből.
Cloud City

  

Blogjaim, hobbi projektjeim

* The Ubuntu Incident
* Python Adventures
* @GitHub
* heroku
* extra
* haladó Python
* YouTube listák


Debrecen | la France


[ edit ]

Edit - History - Print *** Report - Recent Changes - Search
Page last modified on 2020 November 04, 18:25