Java fundamentals through coding exercises
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

3.1 KiB

Scanner-olioilla voidaan lukea monia erilaisia tietovirtoja. Olemme tähän asti lukeneet lähinnä käyttäjien syötteitä System.in-tietovirrasta, mutta Scanneria voidaan käyttää myös esimerkiksi tiedostojen ja verkkolähteiden lukemiseen.

Tässä tehtävässä sinun tulee lukea verkosta kaupunkien nimet ja väkiluvut ja tulostaa sellaisten kaupunkien nimet, joiden väkiluku on yli 10 000 asukasta. Käytä pohjana KaupungitVerkosta.java-tiedostoa.

KaupungitVerkosta-luokan logiikka on toteutettu siten, että kaupungin nimi tulostetaan heti kyseistä riviä läpikäytäessä. Tässä tehtävässä sinun tulee muuttaa toimintalogiikkaa niin, että nimet tulostetaan aakkosjärjestyksessä.

Aakkosjärjestyksen toteuttamiseksi sinun tuleekin laittaa yli 10 000 asukkaan kaupunkien nimet talteen listalle kunnes kaikki kaupungit on käyty läpi. Sen jälkeen järjestä lista Collections.sort-metodin avulla, ja lopuksi tulosta listan alkiot yksi kerrallaan.

Pohja: https://github.com/haagahelia/swd4tn032-TH_JJ/blob/master/src/viikko3/listat/th/KaupungitVerkosta.java

Collections.sort: https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#sort-java.util.List-

Example output:
Akaa
Alavus
Espoo
Forssa
Hamina
Heinola
Helsinki
Huittinen
Hyvinkää
Hämeenlinna
Iisalmi
Imatra
Joensuu
Jyväskylä
Jämsä
Järvenpää
Kaarina
Kajaani
Kalajoki
Kangasala
Kankaanpää
Kauhajoki
Kauhava
Kemi
Kerava
Kitee
Kokkola
Kotka
Kouvola
Kuopio
Kurikka
Kuusamo
Lahti
Lappeenranta
Lapua
Lieksa
Lohja
Loimaa
Loviisa
Maarianhamina
Mikkeli
Naantali
Nivala
Nokia
Orimattila
Oulu
Paimio
Parainen
Pieksämäki
Pietarsaari
Pori
Porvoo
Raahe
Raasepori
Raisio
Rauma
Riihimäki
Rovaniemi
Salo
Sastamala
Savonlinna
Seinäjoki
Tampere
Tornio
Turku
Ulvila
Uusikaupunki
Vaasa
Valkeakoski
Vantaa
Varkaus
Ylivieska
Ylöjärvi
Äänekoski

KaupungitVerkosta.java

// Ref: https://github.com/haagahelia/swd4tn032-TH_JJ/blob/master/src/viikko3/listat/th/KaupungitVerkosta.java
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class KaupungitVerkosta {
// Define Exception for unreachable URLs
public static void main(String[] args) throws Exception {
URL csvFile = new URL("https://git.io/Jv3N3");
ArrayList<String> cityList = new ArrayList<String>();
int i;
Scanner syote = new Scanner(csvFile.openStream(), "UTF-8");
// Exclude header line
String firstLine = syote.nextLine();
while (syote.hasNextLine()) {
String line = syote.nextLine();
// CSV delimiter is character ,
int lineIndex = line.indexOf(",");
String city = line.substring(0, lineIndex);
int population = Integer.parseInt(line.substring(lineIndex + 1));
if (population >= 10000) {
cityList.add(city);
}
}
syote.close();
Collections.sort(cityList);
for (i= 0; i < cityList.size(); i++) {
System.out.println(cityList.get(i));
}
}
}