233 lines
12 KiB
HTML
233 lines
12 KiB
HTML
|
<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
|
||
|
<html>
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||
|
<meta name="GENERATOR" content="Mozilla/4.76 [en] (Win98; U)
|
||
|
[Netscape]">
|
||
|
<title>API kordamine</title>
|
||
|
</head>
|
||
|
<body>
|
||
|
<h2 style="margin-left: 40px;">Java API<br>
|
||
|
</h2>
|
||
|
<div style="margin-left: 40px;">This lab is for practicing Java -
|
||
|
you have to find descriptions of the following classes and solve a
|
||
|
set of small problems.<br>
|
||
|
</div>
|
||
|
<p style="margin-left: 40px;"><tt>java.lang.String</tt> <br>
|
||
|
<tt>java.lang.StringBuffer/StringBuilder<br>
|
||
|
java.lang.Character</tt> <br>
|
||
|
<tt>java.lang.Integer (-> Double, ...)</tt> <br>
|
||
|
<tt>java.lang.Math</tt> <br>
|
||
|
<tt>java.lang.Comparable</tt> </p>
|
||
|
<p style="margin-left: 40px;"><tt>java.util.StringTokenizer</tt> <tt><br>
|
||
|
java.util.Calendar</tt><br>
|
||
|
<tt>java.util.Random</tt> <tt><br>
|
||
|
java.util.ArrayList</tt> <tt><br>
|
||
|
java.util.HashMap</tt><br>
|
||
|
<span style="font-family: monospace;">java.util.Set</span><br>
|
||
|
<tt>java.util.List<br>
|
||
|
java.util.Collection<br>
|
||
|
java.util.TreeSet<br>
|
||
|
</tt><tt>java.util.Arrays<br>
|
||
|
java.util.Iterator<br>
|
||
|
</tt></p>
|
||
|
<p style="margin-left: 40px;">...<br>
|
||
|
</p>
|
||
|
<h3 style="margin-left: 40px;">Problems</h3>
|
||
|
<div style="margin-left: 40px;">
|
||
|
<ul>
|
||
|
<li>Convert a given double number (<span style="font-family:
|
||
|
monospace;">double</span>) into String (<span
|
||
|
style="font-family: monospace;">String</span>).</li>
|
||
|
<li>Convert a string (<span style="font-family: monospace;">String</span>)
|
||
|
into an integer number (<span style="font-family: monospace;">int</span>).
|
||
|
|
||
|
Assume that the string actually represents an integer
|
||
|
(Discover what happens, if the string is illegal?).</li>
|
||
|
<li>Take the current moment of time from the computers inner
|
||
|
clock and form a string "hours:minutes:seconds" (use 24h
|
||
|
notation, e.g. "13:25:10").</li>
|
||
|
<li>Find a cosine of a given angle that is expressed in degrees.</li>
|
||
|
<li>Print a table of square roots for numbers from 0 up to 100
|
||
|
using step 5 (print two numbers per line: argument and its
|
||
|
square root).</li>
|
||
|
<li>Given a string replace in it all uppercase letters with
|
||
|
corresponding lowercase letters and all lowercase letters with
|
||
|
corresponding uppercase letters. Do not change other symbols (<span
|
||
|
style="font-family: monospace;">"ABcd12"</span> -> <span
|
||
|
style="font-family: monospace;">"abCD12"</span>). Use <span
|
||
|
style="font-family: monospace;">StringBuffer</span> or <span
|
||
|
style="font-family: monospace;">StringBuilder</span> class
|
||
|
for intermediate result. Create an independent method <code
|
||
|
id="yui_3_2_0_1_1314010804247640">String reverseCase (String
|
||
|
s) </code>for this task.</li>
|
||
|
<li>Given a string find its reverse (<span style="font-family:
|
||
|
monospace;">"1234ab"</span> -> <span style="font-family:
|
||
|
monospace;">"ba4321"</span>).</li>
|
||
|
<li>Given a text (<span style="font-family: monospace;">String</span>)
|
||
|
find the number of words in it. Words are separated by any
|
||
|
positive number of any kind of whitespaces (like space, tab,
|
||
|
...). Create an independent method <code>int countWords
|
||
|
(String t) </code>for this task.</li>
|
||
|
<li>Register the current time, pause the program for 3 seconds,
|
||
|
register the current time again and print the difference
|
||
|
between these two moments of time in milliseconds.</li>
|
||
|
<li>Create a list (<span style="font-family: monospace;">ArrayList</span>)
|
||
|
of 100 random integers (<span style="font-family: monospace;">Integer</span>)
|
||
|
in between 0 and 999. Print the result. What is the difference
|
||
|
between<span style="font-family: monospace;"> int </span>and
|
||
|
<span style="font-family: monospace;">Integer</span>?</li>
|
||
|
<li>Find the minimal element of this list. How to find the
|
||
|
minimal element of any <span style="font-family: monospace;">List</span>
|
||
|
of <span style="font-family: monospace;">Comparable</span>
|
||
|
elements (read about interfaces, also consider that <span
|
||
|
style="font-family: monospace;">ArrayList implements List </span>and
|
||
|
|
||
|
<span style="font-family: monospace;">Integer implements
|
||
|
Comparable</span>)?</li>
|
||
|
<li>Create a hashtable (<span style="font-family: monospace;">HashMap</span>)
|
||
|
containing 5 pairs of strings, where "subject code" serves as
|
||
|
a key and "subject name" serves as a value (e.g. <span
|
||
|
style="font-style: italic;">("I231", "Algorithms and Data
|
||
|
Structures")</span> , just choose any subjects you like).</li>
|
||
|
<li>Print all the keys of this hashtable (one key per line).</li>
|
||
|
<li>Remove one of the subjects from the hashtable.</li>
|
||
|
<li>Print all pairs from this hashtable (each pair on separate
|
||
|
line).</li>
|
||
|
<li>Reverse the order of elements of the list you have created
|
||
|
before. Write an independent method<code> </code>to reverse
|
||
|
any list. The method signature is</li>
|
||
|
</ul>
|
||
|
<div style="margin-left: 80px;"><span style="font-family:
|
||
|
monospace;">public static <T extends Object> void
|
||
|
reverseList (List<T> list)</span><br style="font-family:
|
||
|
monospace;">
|
||
|
<span style="font-family: monospace;">
|
||
|
|
||
|
throws UnsupportedOperationException </span><br>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div style="margin-left: 40px;"><br>
|
||
|
<div style="margin-left: 40px;">Output the result and check that
|
||
|
it is correct.<br>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div style="margin-left: 40px;">
|
||
|
<ul>
|
||
|
<li>Write an independent method to find the maximal element of
|
||
|
any Java collection (you can use your list for testing). The
|
||
|
method signature is</li>
|
||
|
</ul>
|
||
|
<div style="margin-left: 40px;">
|
||
|
<div style="margin-left: 40px;"><span style="font-family:
|
||
|
monospace;">static public <T extends Object &
|
||
|
Comparable<? super T>> T</span> <span
|
||
|
style="font-family: monospace;">maximum (Collection<?
|
||
|
extends T> a) </span><br>
|
||
|
<span style="font-family: monospace;">
|
||
|
|
||
|
throws NoSuchElementException</span><br>
|
||
|
</div>
|
||
|
</div>
|
||
|
<br>
|
||
|
You have to upload your full solution to <a
|
||
|
href="https://moodle.hitsa.ee/">Moodle</a> !<br>
|
||
|
<br>
|
||
|
Git repository address: <a
|
||
|
href="https://jpoial@bitbucket.org/i231/lab1.git">https://jpoial@bitbucket.org/i231/lab1.git</a><br>
|
||
|
</div>
|
||
|
<div style="margin-left: 40px;"> <br>
|
||
|
<hr style="width: 100%; height: 2px;"></div>
|
||
|
<h3 style="margin-left: 40px;">Oskused, mis tuleks praktikumide
|
||
|
käigus omandada:</h3>
|
||
|
<ul style="margin-left: 40px;">
|
||
|
<li>informatsiooni kiire leidmine API kirjeldusest </li>
|
||
|
<li>teisendused ühest tüübist teise, mähisklasside kasutamine</li>
|
||
|
<li> lihtsate arvutuste tegemine</li>
|
||
|
<li> sõnetöötlus, sõnepuhvri kasutamine</li>
|
||
|
<li> aega väljendavate andmetega manipuleerimine</li>
|
||
|
<li> juhuslike andmete genereerimine</li>
|
||
|
<li> listi ja paisktabeli kasutamine, iteraatorid</li>
|
||
|
</ul>
|
||
|
<h3 style="margin-left: 40px;"> Ülesanded:</h3>
|
||
|
<div style="margin-left: 40px;">Koostage peameetod (<tt>main</tt>),
|
||
|
mis sisaldaks lahendust järgmistele probleemidele: </div>
|
||
|
<ul style="margin-left: 40px;">
|
||
|
<li> Teisendada etteantud reaalarv (<span
|
||
|
style="font-family: monospace;">double</span>) sõneks (<tt>String</tt>).</li>
|
||
|
<li> Teisendada etteantud sõne täisarvuks (eeldusel, et see
|
||
|
sõne väljendab täisarvu).</li>
|
||
|
<li> Võtta arvuti kellalt jooksev näit ning moodustada sõne
|
||
|
kujul: <i>tunnid:minutid:sekundid </i>(tunnid 24h skaalal).</li>
|
||
|
<li> Leida kraadides etteantud nurga koosinus.</li>
|
||
|
<li> Väljastada ruutjuurte tabel arvude 0 kuni 100 jaoks
|
||
|
sammuga 5.</li>
|
||
|
<li> Vahetada etteantud sõnes suurtähed väiketähtedega ja
|
||
|
vastupidi jättes muud sümbolid muutmata (<span
|
||
|
style="font-family: monospace;">"ABcd12"</span> -> <span
|
||
|
style="font-family: monospace;">"abCD12"</span>). Kasutage
|
||
|
vahetulemuste salvestamiseks sõnepuhvrit (<tt>StringBuffer</tt>).</li>
|
||
|
<li> Muuta etteantud sõne sümbolite järjekord vastupidiseks
|
||
|
(<span style="font-family: monospace;">"1234ab"</span> -> <span
|
||
|
style="font-family: monospace;">"ba4321"</span>).</li>
|
||
|
<li> Leida sõnade arv etteantud sõnes (sõnade eraldajaks
|
||
|
olgu vähemalt üks tühik, tabulatsioonimärk vms).</li>
|
||
|
<li> Võtta arvuti kellalt jooksev aeg, teha etteantud
|
||
|
pikkusega paus (näiteks 3 sek.), võtta uuesti jooksev aeg ning
|
||
|
arvutada nende kahe ajahetke tegelik vahe millisekundites.<br>
|
||
|
</li>
|
||
|
</ul>
|
||
|
<ul style="margin-left: 40px;">
|
||
|
<li> Genereerida juhuarvudest vahemikus 0 kuni 999 (<tt>Integer</tt>)
|
||
|
koosnev 100-elemendiline list (<tt>ArrayList</tt>) ning
|
||
|
väljastada see.</li>
|
||
|
<li> Leida selle listi vähim element. Proovige kirjutada
|
||
|
eraldi meetod, mis leiaks etteantud <tt>List</tt>-liidest
|
||
|
rahuldava objekti vähima elemendi eeldusel, et elemendid on
|
||
|
võrreldavad liidese <tt>Comparable</tt> mõttes (mida <tt>Integer</tt>
|
||
|
isendid ka on).</li>
|
||
|
<li> Moodustada paisktabel (<tt>HashMap</tt>) umbes 5
|
||
|
elemendiga, milles võtmeks on õppeaine kood (<tt>String</tt>) ja
|
||
|
elemendiks õppeaine nimetus (<tt>String</tt>). Andmed mõelge ise
|
||
|
välja.<br>
|
||
|
</li>
|
||
|
<li> Väljastada selle paisktabeli kõik võtmed.</li>
|
||
|
<li> Eemaldada üks ainetest sellest tabelist.</li>
|
||
|
<li> Väljastada kõik paarid "võti - väärtus" sellest tabelist.</li>
|
||
|
<li> Muuta esimeses ülesandes genereeritud listi (<span
|
||
|
style="font-family: monospace;">ArrayList</span>) elementide
|
||
|
järjekord vastupidiseks. Väljastada tulemus ja kontrollida selle
|
||
|
õigsust.</li>
|
||
|
<li> Koostada maksimumi leidmise meetod (eraldi meetodina), mis
|
||
|
kasutaks liideseid <tt>Collection</tt> ja <tt>Comparable</tt>
|
||
|
(s.t. meetodi parameetriks on <span style="font-family:
|
||
|
monospace;">Collection</span>-objekt, mis sisaldab <span
|
||
|
style="font-family: monospace;">Comparable</span>-liidest
|
||
|
rahuldavaid elemente, meetodi tagastusväärtuseks on maksimaalne
|
||
|
element <span style="font-family: monospace;">Comparable</span>-tüüpi
|
||
|
|
||
|
objektina). Selle meetodi poole pöördumisel võite kasutada
|
||
|
esimeses ülesandes loodud listi.<br>
|
||
|
</li>
|
||
|
</ul>
|
||
|
<ul style="margin-left: 40px;">
|
||
|
</ul>
|
||
|
<div style="margin-left: 40px;">
|
||
|
<div style="margin-left: 40px;"><span style="font-weight: bold;"></span>Programm testida ja
|
||
|
|
||
|
esitada Moodle kaudu.<br>
|
||
|
<br>
|
||
|
Git repositoorium: <a
|
||
|
href="https://jpoial@bitbucket.org/i231/lab1.git">https://jpoial@bitbucket.org/i231/lab1.git<br>
|
||
|
</a><br>
|
||
|
</div>
|
||
|
<br>
|
||
|
<hr style="width: 100%; height: 2px;">Jaanus Pöial<br>
|
||
|
<br>
|
||
|
<br>
|
||
|
<br>
|
||
|
<br>
|
||
|
</div>
|
||
|
</body>
|
||
|
</html>
|