Najneskorší termín odovzdania: 31.10.2012 (streda) o 21:00
Odovzdávané súbory: ZadanaKorytnacka.java
, KlikaciaPlocha.java
Cieľom tejto sady domácich zadaní je vytvoriť triedu ZadanaKorytnacka
, ktorá rozširuje triedu Turtle
a ktorá obsahuje nižšie predpísané metódy.
Doplňujúce požiadavky:
Pri analýze textu sa z textu extrahujú kadejaké užitočné informácie. Medzi veľmi zaujímavé patria rôzne číselné informácie. Naučte korytnačky triedy ZadanaKorytnacka
metódu pocetCisel
, ktorá v zadanom reťazci zráta počet čísel, ktoré sa v ňom nachádzajú. Pod číslom rozumieme akúkoľvek súvislú postupnosť cifier 0
, ..., 9
a znaku ,
(čiarka). Predpokladáme korektný (a zjednodušený) vstup, t.j., že čísla v texte obsahujú nanajvýš jednu čiarku ako oddeľovač desatinnej časti a v texte nie sú použité medzery ako oddeľovač tisícov.
Príklady:
190
a 88,16
;
Rôzne poruchy nervového a svalového systému výrazne zhoršujú používanie počítačov - zvyčajnými vstupmi sú totiž klávesnica alebo myš. Dôsledkom takýchto porúch (napr. svalový tras a chvenie) môže byť akási obdoba koktavosti. Používateľ vtedy namiesto slova Java
napíše Jaaaavvaa
. Naučte korytnačky triedy ZadanaKorytnacka
metódu odstranDuplicitu
, ktorá vráti referenciu na novovytvorený objekt triedy String
, ktorého obsah vznikne odstránením duplicitných výskytov rovnakého znaku v rade za sebou.
Príklady:
odstranDuplicitu("Jaaavvaaa") = "Java"
odstranDuplicitu("IIIssiel") = "Isiel"
odstranDuplicitu("IIissiel") = "Iisiel"
odstranDuplicitu("Odddstran duuuupllicitu") = "Odstran duplicitu"
Naučte korytnačky triedy ZadanaKorytnacka
metódu cyklickyPosun
, ktorá vráti referenciu na novovytvorený objekt triedy String
. Obsah tohto reťazca vznikne zo zadaného reťazca s
cyklickým posunutím o zadaný počet znakov vpravo (resp. vľavo ak je posun záporný).
Príklady:
cyklickyPosun("Java je super", 2) = "erJava je sup"
cyklickyPosun("Java je super", 4) = "uperJava je s"
cyklickyPosun("Java je super", -2) = "va je superJa"
cyklickyPosun("Java je super", 15) = "erJava je sup"
Zobrazila sa vám niekedy webová stránka "divne"? Ak áno, možno bol dôvod ten, že tvorca stránky nekorektne uviedol kódovanie obsahu stránky. Okrem nastavenia kódovania zaujímavé riešenie priniesla aj HTML 4: znakové entity. Základná myšlienka spočívala v tom, že špeciálne znaky sa kódovali prostredníctvom sekvencie znakov. Napríklad znak <
sa dá zapísať ako <
alebo ako <
. A práve tá druhá možnosť je pre nás zaujímavá. Konkrétne, akýkoľvek znak môžeme v HTML4 zapísať pomocou znakovej entity ako &#N;
, kde N
je kód tohto znaku v UNICODE kódovaní.
Viac o html znakových entitách nájdete tu:
Naučte korytnačky triedy ZadanaKorytnacka
metódy znakyNaEntity
a entityNaZnaky
. Každá z metód vráti referenciu na novovytvorený reťazec (objekt triedy String
), ktorý obsahuje výsledok prevodu zadaného reťazca.
Metóda znakyNaEntity
(2 body) prevedie každý znak v zadanom reťazci na prislúchajúcu znakovú entitu. Výnimkou sú znaky anglickej abecedy (a-z, A-Z, 0-9), ktoré sa neprevádzajú.
Príklad:
znakyNaEntity("Počítač") = "Počítač"
Metóda entityNaZnaky
(5 bodov) prevedie každý výskyt znakovej entity (kódovanej ako &#N;
) na odpovedajúci znak. Môžete predpokladať korektný vstup, t.j., že prevádzaný reťazec nebude obsahovať znakové entity kódované iným spôsobom (hexadecimálne alebo pomenované znakové entity).
Príklad:
entityNaZnaky("Počítač") = "Počítač"
Pomôcka:
Integer.parseInt()
:
Integer.toString()
:
substring
:
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
Naprogramujte triedu KlikaciaPlocha
rozšírujúcu triedu WinPane
, ktorá klikaním do plochy umožní kresliť mnohouholníky s očíslovanými vrcholmi.
Klikacia plocha funguje nasledovne:
onMousePressed
), pričom miesto kliknutia je stredom vrcholu
Pomôcka:
printCenter
:
Integer.toString()
: