Homework: Dec 11, Groups 1 and 2 - Exceptions

24 views
Skip to first unread message

Mikheil Kapanadze

unread,
Dec 11, 2007, 11:44:39 PM12/11/07
to tsu-jav...@googlegroups.com
Mogesalmebit kvelas,

vinc kartulad ver xedavt, gtxovt naxot davaleba misamartze: http://groups.google.com/group/tsu-java-2007-2 seqciashi Discussions

დავალება:

მოცემული გვაქვს შემდეგი ინტერფეისი:

package ge.tsu.java.homeworks;

/**
 * Es klasi gamoikeneba char-ebis casakitxad sxvadasxva ckaroebidan
 */
public interface SimpleReader {
    /**
     * erti simbolos cakitxva
     *
     * @return cakitxuli simbolo
     * @throws SimpleReaderException
     *             artkams am shecdomas or shemtxvevashi: a) tuki meti
     *             simboloebi agar darcha. am shemtxvevashi message-shi ceria:
     *             "No more characters" b) rodesac reader ukve daxurulia. am
     *             shemtxvevashi message-shi ceria: "Unable to read - the reader
     *             is already closed"
     */
    char read() throws SimpleReaderException;

    /**
     * reader-is daxurva
     *
     * @throws SimpleReaderException
     *             am shecdomas artkams daxurvis ganmeorebiti mcdelobis
     *             shemtxvevashi
     */
    void close() throws SimpleReaderException;

    /**
     * Abrunebs true tuki read()-is gamodzaxeba shesadzlebelia (anu reader arc
     * daxurulia da arc boloshi vart gasuli
     *
     * @return
     */
    boolean isReadable();
}

დაწერეთ კლასი SimpleStringReader, რომელიც რეალიზაციას უკეთებს ამ ინტერფეისს. მას უნდა ჰქონდეს ერთი კონსტრუქტორი, რომელიც იღებს რაღაც String ტიპის პარამეტრს და SimpleReader-ით განსაზღვრული მეთოდების გამოძახების შემთხვევაში მომხმარებელს საშუალებას აძლევს, თითო-თითო სიმბოლო იკითხოს იმ String-იდან. ერთი სიმბოლოს ამოღებისათვის String-ს აქვს მეთოდი charAt() რომელსაც პარამეტრად გადაეცემა მთელი რიცხვი (მაგალითად, String st="qwerty"; char c = st.charAt(2);)

თუკი პარამეტრად გადაეცა null, კონსტრუქტორმა დაარტყას java.lang.IllegalArgumentException

დაწერეთ კლასი MainClass, რომელიც სტანდარტული შეტანის ნაკადიდან წაიკითხავს ერთ სტრიქონს და მთელ რიცხვს. შემდეგ კი SimpleStringReader კლასის ობიექტზე ციკლის დატრიალების საშუალებით დაბეჭდავს შეტანილი რიცხვის შესაბამისი სიმბოლოების რაოდენობას ამ სტრიქონიდან. თუკი წაკითხვის დროს მოხდება შეცდომა, დაბეჭდეთ ამ შეცდომის თანდართული ტექსტი (message).

წაკითხვა მოაქციეთ try..catch ბლოკში. წაკითხვის შემდეგ დახურეთ reader და ამისათვის გამოიყენეთ ბლოკი finally

თუკი MainClass -ში წაკითხვისას შემოვიდა ცარიელი სტრიქონი (ანუ თუ სიგრძე 0-ია. სიგრძე დაითვლება ასე: String st="qwerty"; int strLen = st.length();), მაშინ SimpleStringReader კლასის ობიექტს კონსტრუქტორში გადაეცით null. ამ დროს გაითვალისწინეთ შესაძლო შეცდომების დამუშავება. თუკი მოხდა რაიმე შეცდომა, მაშინ პროგრამამ დააგენერიროს java.lang.Exception ტიპის შეცდომა ტექსტით "Fatal error"და ავარიულად დასრულდეს.

სადემონსტრაციო პროგრამა სტანდარტული შეტანის ნაკადიდან წაკითხვის შესახებ იხილეთ ამ მისამართზე (თუ ლინკი არ მუშაობს, დააკოპირეთ შემდეგი მისამართი: http://groups.google.com/group/tsu-java-2007-2/web/%E1%83%99%E1%83%98%E1%83%97%E1%83%AE%E1%83%95%E1%83%90%20%E1%83%A1%E1%83%A2%E1%83%90%E1%83%9C%E1%83%93%E1%83%90%E1%83%A0%E1%83%A2%E1%83%A3%E1%83%9A%E1%83%98%20%E1%83%9C%E1%83%90%E1%83%99%E1%83%90%E1%83%93%E1%83%98%E1%83%93%E1%83%90%E1%83%9C )
Reply all
Reply to author
Forward
0 new messages