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.

108 lines
2.6 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. Tee luokka Remontti, jolla on attribuutit vuosi (int), kuvaus (String). Tee luokkaan parametriton konstruktori, joka asettaa vuodeksi nykyisen vuoden. Nykyisen vuoden saat käyttämällä LocalDate luokkaa. Tee lisäksi set- ja get-metodit ja toString-metodi. setVuosi metodin tarkastaa, ettei remontin vuosi ole nykyistä vuotta suurempi. Metodi palauttaa true, jos vuosi pystyttiin asettamaan eli sen on nykyinen tai sitä aiempi vuosi muuten metodi palauttaa false eikä aseta vuodeksi annettua vuotta. Tee ohjelmaluokka RemonttiOhjelma, jossa tehdään yksi olio.
  2. Jos ohjelman suoritus onnistuu, sen täytyy toimia seuraavasti:
  3. ```
  4. Anna vuosi: 2019
  5. Anna kuvaus: Putkiremontti
  6. Vuonna 2019 tehtiin remontti Putkiremontti
  7. ```
  8. Jos annettu päivämäärä on tulevaisuudessa, ohjelma toimii seuraavasti:
  9. ```
  10. Anna vuosi: 2030
  11. Vuosi ei voi olla tulevaisuudessa
  12. ```
  13. ```
  14. Example output:
  15. Anna vuosi: 2030
  16. Vuosi ei voi olla tulevaisuudessa
  17. ```
  18. ------------------
  19. **Remontti.java**
  20. ```
  21. import java.time.LocalDate;
  22. import java.util.InputMismatchException;
  23. import java.util.Scanner;
  24. public class Remontti {
  25. private int vuosi;
  26. private String kuvaus;
  27. // set-metodit
  28. public boolean setVuosi(int vuosi) {
  29. LocalDate nykyHetki = LocalDate.now();
  30. if (vuosi > nykyHetki.getYear()) {
  31. System.out.println("Vuosi ei voi olla tulevaisuudessa");
  32. return false;
  33. } else {
  34. this.vuosi = vuosi;
  35. return true;
  36. }
  37. }
  38. public void setKuvaus(String kuvaus) {
  39. this.kuvaus = kuvaus;
  40. }
  41. // get-metodit
  42. public int getVuosi() {
  43. return vuosi;
  44. }
  45. public String getKuvaus() {
  46. return kuvaus;
  47. }
  48. public Remontti() {
  49. Scanner syote = new Scanner(System.in);
  50. System.out.print("Anna vuosi: ");
  51. try {
  52. if (!this.setVuosi(syote.nextInt())) {
  53. System.exit(0);
  54. }
  55. } catch (InputMismatchException e) {
  56. System.err.println("Syöte ei ole kokonaisluku");
  57. System.exit(1);
  58. }
  59. // Consume previous newline
  60. syote.nextLine();
  61. System.out.print("Anna kuvaus: ");
  62. this.setKuvaus(syote.nextLine());
  63. }
  64. @Override
  65. public String toString() {
  66. return String.format(
  67. "Vuonna %d tehtiin remontti %s",
  68. this.getVuosi(),
  69. this.getKuvaus()
  70. );
  71. }
  72. }
  73. ```
  74. ------------------
  75. **RemonttiOhjelma.java**
  76. ```
  77. public class RemonttiOhjelma {
  78. public static void main() {
  79. Remontti remppa = new Remontti();
  80. System.out.println(remppa);
  81. }
  82. }
  83. ```