Tämä kurssi on jo päättynyt.

⌛⌛ 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 on parameters.

  • version-elementin arvo on 1.0.

  • maven.compiler.source ja maven.compiler.target -elementtien arvo on 17 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 esimerkiksi Parameters, on elementin arvo Parameters.

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.

Palautusta lähetetään...