IanLaskenta. Metodien suorittaminen eli kutsuminen.

package v4_eta;

import java.util.Scanner;

// Metodien suorittaminen eli kutsuminen

/**
* @author ark
* @version 0.35
* @task 4-120214
*
*
*
* IanLaskenta, joka laskee ja tulostaa henkilön iän päivien
* tarkkuudella. Sovitaan, että jokaisessa kuussa on 30 päivää ja vuodessa
* on yhteensä 360 päivää. Henkilö, jonka syntymäpäivä on 31. päivä, ei
* voi käyttää tätä ohjelmaa. Tee julkinen metodi aja, joka pyytää
* käyttäjän syntymäpäivän ja nykyisen päivän, laskee henkilön iän ja
* tulostaa sen. Toteuta seuraavat metodit, joita aja-metodi kutsuu:
*
* pyydaPaiva, joka pyytää käyttäjältä päivän, tarkastaa sen
* (1<=paiva<=30) ja palauttaa sen arvonaan
*
* pyydaKuukausi, joka pyytää käyttäjältä kuukauden, tarkastaa sen
* (1<=kuukausi<=12) ja palauttaa sen arvonaan,
*
* pyydaVuosi, joka pyytää käyttäjältä vuoden, tarkastaa sen ja palauttaa
* sen arvonaan,
*
* laskeIka, joka laskee henkilön iän ja palauttaa sen arvonaan,
* päivämäärät viedään metodiin parametreina ja
*
* tulostaIka, joka tulostaa parametrina annetun iän.
*
* Mieti tarkkaan, mitä muuttujia tarvitset ja missä niiden tarvitsee
* näkyä. Jos haluat, voit lisätä ohjelmaasi toiston siten, että ohjelma
* pystyy laskemaan useamman kuin yhden henkilön iän suorituskerrallaan.
* Voit myös miettiä, mitä ohjelman pitäisi tehdä, jos käyttäjä antaa
* syntymäpäivän, joka on nykyisen päivän jälkeen.
*
*/

public class IanLaskenta4 {
Scanner input = new Scanner(System.in);

public void run() {

int day = 1, month = 1, year = 1;
String name = "", vastaus = "k";
int dateInDays, birthDateInDays;

do {
// suoritetaanko ohjelma?
System.out.println("Haluatko laskea ikäsi?");
vastaus = input.next();
if (vastaus.contains("y") || vastaus.equals("ok")) {

// uusi käyttäjä
System.out.print("Anna nimesi: ");
name = input.next();

// Date = Päivämäärä
System.out.print("Monesko päivä tnä on? ");
day = askDay();
System.out
.print("Monesko kuukausi nyt on (syötä luku 1 - 12 välillä): ");
month = askMonth();
System.out.print("Syötä nykyinen vuosi (esim., 2012): ");
year = askYear();

dateInDays = year * 360 + month * 30 + day;
// end of Date = Päivämäärä

// Date of birth = Syntymäpäivä
System.out.print("\n" + "Minä vuonna olet syntynyt? ");
year = askYear();
System.out
.print("Sinun syntymäkuukausi (jos tammikuu, syötä '1', helmikuu - syötä '2', jne.): ");
month = askMonth();
System.out.print("Monentenako päivänä syntymäpäiväsi on? ");
day = askDay();
birthDateInDays = laskeIka(dateInDays, year, month, day);
tulostaIka(name, birthDateInDays, dateInDays);
// end of Date of birth = Syntymäpäivä

} else {
System.out.println("Ohjelma lopetettu.");
}
} while (vastaus.equals("ok") || vastaus.contains("y"));
}

// Tulostus, pvm tarkistus
private void tulostaIka(String name, int age, int dateInDays) {
if (age <= 0) {
System.out
.println("Tarkista syntymäpmv ja pvm. ja yritä uudelleen!"
+ "\n");
} else {
int years, months, days;
years = (int) age / 360;
months = (int) (age - years * 360) / 30;
days = (int) (age - years * 360 - months * 30);

System.out.println("\n" + name + ", olet " + years + " vuotta, "
+ months + " kuukautta ja " + days + " päivää vanha."
+ "\n");
}
}

// end of Tulostus, pvm tarkistus

// erill. metodi laskeIkä
private int laskeIka(int dateInDays, int year, int month, int day) {
int ageInDays = dateInDays - 360 * year - 30 * month - day;
return ageInDays;
}

// erill. metodi pyydäPäivä
private int askDay() {
int day = 1;
do {
day = input.nextInt();
if (day == 31) {
System.out
.println("MAFIAA has issued a licence for the program for 30 days' period maximum.");
System.out
.println("(-> \"Music And Film Industry Association of America\", mafiaa.org)");
System.out
.print("You can have a trial run of the program by using some other period: ");
} else if (day > 31 || day < 1) {
System.out.print("Tarkista ja syötä luku uudelleen: ");
}
} while (day > 30 || day < 1);
return day;
}

// end of erill. metodi pyydäPäivä

// erill. metodi pyydäKuukausi
private int askMonth() {
int month;
do {
month = input.nextInt();
if (month > 12 || month < 1) {
System.out.print("Tarkista ja syötä luku uudelleen: ");
}
} while (month > 12 || month < 1);
return month;
}

// end of erill. metodi pyydäKuukausi

// erill. metodi pyydäVuosi
private int askYear() {
int year;
do {
year = input.nextInt();
if (year > 3000 || year < 0) {
System.out.print("Tarkista ja syötä luku uudelleen: ");
}
} while (year > 3000 || year < 0);
return year;
}

public static void main(String[] args) {
IanLaskenta4 olio = new IanLaskenta4();
olio.run();
}
}
Advertisements

Comments are closed.

%d bloggers like this: