|
|
- 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.
-
- Kun palautat ratkaisun Viopeen, muista laittaa alkuun kaikki import komennot.
-
- Jos ohjelman suoritus onnistuu, sen täytyy toimia seuraavasti:
-
- ```
- Anna vuosi: 2019
- Anna kuvaus: Putkiremontti
- Vuonna 2019 tehtiin remontti Putkiremontti
- ```
-
- Jos annettu päivämäärä on tulevaisuudessa, ohjelma toimii seuraavasti:
-
- ```
- Anna vuosi: 2030
- Vuosi ei voi olla tulevaisuudessa
- ```
-
- ```
- Example output:
- Anna vuosi: 2030
- Vuosi ei voi olla tulevaisuudessa
- ```
-
- ------------------
-
- ```
- // Remontti.java
-
- import java.time.LocalDate;
- import java.util.InputMismatchException;
- import java.util.Scanner;
-
- public class Remontti {
-
- private int vuosi;
- private String kuvaus;
-
- // set-metodit
- public boolean setVuosi(int vuosi) {
-
- LocalDate nykyHetki = LocalDate.now();
- if (vuosi > nykyHetki.getYear()) {
- System.out.println("Vuosi ei voi olla tulevaisuudessa");
- return false;
- } else {
- this.vuosi = vuosi;
- return true;
- }
- }
-
- public void setKuvaus(String kuvaus) {
- this.kuvaus = kuvaus;
- }
-
- // get-metodit
- public int getVuosi() {
- return vuosi;
- }
-
- public String getKuvaus() {
- return kuvaus;
- }
-
- public Remontti() {
- Scanner syote = new Scanner(System.in);
-
- System.out.print("Anna vuosi: ");
-
- try {
- if (!this.setVuosi(syote.nextInt())) {
- System.exit(0);
- }
- } catch (InputMismatchException e) {
- System.err.println("Syöte ei ole kokonaisluku");
- System.exit(1);
- }
-
- // Consume previous newline
- syote.nextLine();
-
- System.out.print("Anna kuvaus: ");
- this.setKuvaus(syote.nextLine());
- }
-
- @Override
- public String toString() {
- return String.format(
- "Vuonna %d tehtiin remontti %s",
- this.getVuosi(),
- this.getKuvaus()
- );
- }
- }
- ```
-
- ------------------
-
- ```
- // RemonttiOhjelma.java
-
- public class RemonttiOhjelma {
-
- public static void main() {
- Remontti remppa = new Remontti();
- System.out.println(remppa);
- }
- }
- ```
|