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.

139 lines
3.1 KiB

4 years ago
  1. 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.
  2. 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.
  3. 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ä.
  4. 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.
  5. Pohja: https://github.com/haagahelia/swd4tn032-TH_JJ/blob/master/src/viikko3/listat/th/KaupungitVerkosta.java
  6. Collections.sort: https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#sort-java.util.List-
  7. ```
  8. Example output:
  9. Akaa
  10. Alavus
  11. Espoo
  12. Forssa
  13. Hamina
  14. Heinola
  15. Helsinki
  16. Huittinen
  17. Hyvinkää
  18. Hämeenlinna
  19. Iisalmi
  20. Imatra
  21. Joensuu
  22. Jyväskylä
  23. Jämsä
  24. Järvenpää
  25. Kaarina
  26. Kajaani
  27. Kalajoki
  28. Kangasala
  29. Kankaanpää
  30. Kauhajoki
  31. Kauhava
  32. Kemi
  33. Kerava
  34. Kitee
  35. Kokkola
  36. Kotka
  37. Kouvola
  38. Kuopio
  39. Kurikka
  40. Kuusamo
  41. Lahti
  42. Lappeenranta
  43. Lapua
  44. Lieksa
  45. Lohja
  46. Loimaa
  47. Loviisa
  48. Maarianhamina
  49. Mikkeli
  50. Naantali
  51. Nivala
  52. Nokia
  53. Orimattila
  54. Oulu
  55. Paimio
  56. Parainen
  57. Pieksämäki
  58. Pietarsaari
  59. Pori
  60. Porvoo
  61. Raahe
  62. Raasepori
  63. Raisio
  64. Rauma
  65. Riihimäki
  66. Rovaniemi
  67. Salo
  68. Sastamala
  69. Savonlinna
  70. Seinäjoki
  71. Tampere
  72. Tornio
  73. Turku
  74. Ulvila
  75. Uusikaupunki
  76. Vaasa
  77. Valkeakoski
  78. Vantaa
  79. Varkaus
  80. Ylivieska
  81. Ylöjärvi
  82. Äänekoski
  83. ```
  84. --------------------
  85. **KaupungitVerkosta.java**
  86. ```
  87. // Ref: https://github.com/haagahelia/swd4tn032-TH_JJ/blob/master/src/viikko3/listat/th/KaupungitVerkosta.java
  88. import java.net.URL;
  89. import java.util.ArrayList;
  90. import java.util.Collections;
  91. import java.util.Scanner;
  92. public class KaupungitVerkosta {
  93. // Define Exception for unreachable URLs
  94. public static void main(String[] args) throws Exception {
  95. URL csvFile = new URL("https://git.io/Jv3N3");
  96. ArrayList<String> cityList = new ArrayList<String>();
  97. int i;
  98. Scanner syote = new Scanner(csvFile.openStream(), "UTF-8");
  99. // Exclude header line
  100. String firstLine = syote.nextLine();
  101. while (syote.hasNextLine()) {
  102. String line = syote.nextLine();
  103. // CSV delimiter is character ,
  104. int lineIndex = line.indexOf(",");
  105. String city = line.substring(0, lineIndex);
  106. int population = Integer.parseInt(line.substring(lineIndex + 1));
  107. if (population >= 10000) {
  108. cityList.add(city);
  109. }
  110. }
  111. syote.close();
  112. Collections.sort(cityList);
  113. for (i= 0; i < cityList.size(); i++) {
  114. System.out.println(cityList.get(i));
  115. }
  116. }
  117. }
  118. ```