⌛⌛ Parametritaulukko¶
Tehtävän palautus koostuu Maven-projektista. Sijoita pom.xml
-tiedosto paikallisen tietovarastosi
round3/parameters
-hakemistoon ja tee tähän hakemistoon src/main/java
-niminen alihakemisto.
Voit valita Java-luokkasi tai -luokkiesi nimet vapaasti, kunhan tiedostosi ovat hakemistossa
round3/parameters/src/main/java
. Mikäli luot projektin NetBeansilla, kannattaa tyhjentää Package:
-kenttä,
jotta tiedostot päätyvät oikeaan paikkaan.
Toteuta ohjelma, joka ensin tulostaa näytölle kehotteen Parameters:
, sitten lukee käyttäjältä
(System.in
) parametrejä rivi kerrallaan,
ja parametrit luettua tulostaa ne aakkosjärjestyksessä
juoksevasti rivinumeroituun “nätisti” muotoiltuun taulukkoon. Parametrit tulee
tarkemmin ottaen tulostaa seuraavanlaiseen merkkien avulla piirrettyyn taulukkoon:
Taulukossa on kaksi saraketta.
Ensimmäiseen tuostetaan rivinumero, missä ylimmän rivin numero on 1, toiseksi ylimmän 2, jne.
Toiseen tulostetaan aakkosjärjestyksessä seuraava toistaiseksi tulostamaton parametri. Ylimmälle riville aakkosjärjestyksessä ensimmäinen, toiseksi ylimmälle aakkosjärjestyksessä toinen, jne.
Kumpaakin saraketta varten varataan sen verran tilaa, että kyseisen sarakkeen leveydeksi tulee kyseisen sarakkeen leveimmän arvon merkkien määrä + yksi ylimääräinen välilyönti kummallekin puolelle.
Kummankin sarakkeen leveydet ovat toisistaan riippumattomia.
Ensimmäisen sarakkeen arvot tulostetaan oikeaan laitaan ja toisen sarakkeen arvot vasempaan laitaan kohdistettuina.
Ylimääräinen tila täytetään välilyönneillä.
Taulukon kunkin arvon ympärille tulostetaan alla tarkemmin kuvatuista merkeistä koostuva reunus.
Taulukon ulkoreuna koostuu risuaitamerkeistä ‘#’.
Kahden sarakkeen välissä on putkimerkeistä ‘|’ koostuva pystyviiva.
Kahden rivin välissä on miinusmerkistä ‘-’ koostuva vaakaviiva.
Poikkeus: edellämainittujen pysty- ja vaakaviivojen risteyskohdissa on plusmerkki ‘+’.
Vinkkejä¶
Aluksi pitää laskea kummankin sarakkeen leveimpien arvojen leveydet.
Ensimmäisen sarakkeen levein arvo on viimeisen rivin rivinumero. Voit esim. muuntaa viimeisen
rivin rivinumeron String
-merkkijonoksi ja tarkistaa sen pituuden.
Toisen sarakkeen levein arvo on pisin parametri, jonka selvittäminen on suoraviivaista esim. parametrejä luettaessa niiden pituus tarkistamalla.
Kun kummankin sarakkeen leveys tiedetään, pitäisi taulukon tulostamisen onnistua varsin suoraviivaisesti. Kannattanee hyödyntää esim. funktiota System.out.format, jolle voi antaa tulostettavan arvon leveys- ja kohdistusmääreen.
Koska annettujen parametrien lukumäärä ei ole etukäteen tiedossa, on jotenkin pääteltävä,
milloin parametrien lukeminen lopetetaan. Tässä tehtävässä parametrien loppuminen ilmaistaan
lähettämällä tyhjä rivi (""
). Tyhjää riviä ei kuulu lisätä luettujen parametrien listaan.
Automaattiset sekä alla kuvatut testit olettavat, että teet projektitiedostoosi pom.xml
seuraavat määritykset:
artifactId
-elementin arvo onparameters
.version
-elementin arvo on1.0
.maven.compiler.source
jamaven.compiler.target
-elementtien arvo on17
tai pienempi. Tarkistimella on asennettuna Java 17, joten tätä uudempaa versiota ei voi käyttää.Onejar-liitännäisen määritys, jonka
mainClass
-elementti viittaa ohjelmasi pääluokkaan, jonka saat tässä tehtävässä nimetä vapaasti. Jos pääluokkasi on nimeltään esimerkiksiParameters
, on elementin arvoParameters
.
HUOM! Älä luo useita standardisyötettä (System.in
) käyttäviä Scanner
-olioita ratkaisussasi!
Luo ohjelman alussa yksi standardisyötettä lukeva Scanner
-olio, ja käytä tätä samaa oliota koko
ohjelman suorituksen ajan. Teknisistä syistä tarkistin ei toimi oikein, jos syötettä yritetään
lukea useammalla eri Scanner
-oliolla. Sama pätee myös jos käytät esim.
InputStreamReader
-luokkaa syötteen lukemiseen.
Esimerkki¶
Testeri kääntää ohjelmasi komennolla:
mvn package
Kääntämisen onnistuttua ohjelma ajetaan komennolla:
java -jar target/parameters-1.0.one-jar.jar
Ohjelma tulostaa näytölle kehotteen Parameters:
, jonka
jälkeen parametrit luetaan yksitellen käyttäjältä (System.in
)
kukin omalla rivillään. Ensimmäisessä testissä ne ovat:
Chad
Benin
Angola
Algeria
Finland
Romania
Democratic Republic of the Congo
Bolivia
Uzbekistan
Lesotho
Odotettu tuloste on:
Parameters:
#########################################
# 1 | Algeria #
#----+----------------------------------#
# 2 | Angola #
#----+----------------------------------#
# 3 | Benin #
#----+----------------------------------#
# 4 | Bolivia #
#----+----------------------------------#
# 5 | Chad #
#----+----------------------------------#
# 6 | Democratic Republic of the Congo #
#----+----------------------------------#
# 7 | Finland #
#----+----------------------------------#
# 8 | Lesotho #
#----+----------------------------------#
# 9 | Romania #
#----+----------------------------------#
# 10 | Uzbekistan #
#########################################
Palautus¶
Varmista ennen palautusta, että tiedostosi ovat paikallisen tietovarastosi hakemistossa
/round3/parameters/
ja että olet muistanut puskea kaikki muutokset
henkilökohtaiseen etätietovarastoosi. Anna sitten alla olevaan kenttään henkilökohtaisen
etätietovarastosi verkko-osoite, joka on muotoa https://course-gitlab.tuni.fi/compcs140-fall2023/------
,
missä ------
on Tuni-käyttäjätunnuksesi.
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.