uaveiro-leci/1ano/2semestre/poo/src/aula03/Calendar.java

63 lines
2.0 KiB
Java

package aula03;
import utils.UserInput;
import java.util.Scanner;
// Solução do exercício 5
public class Calendar {
public static void main(String[] args) {
// Data contains: {month, year, firstDay}
int[] data = getValues();
int monthDays = monthDays(data[0], data[1]);
printCalendar(data, monthDays);
System.out.println();
}
private static int[] getValues() {
Scanner sin = new Scanner(System.in);
System.out.print("Introduza o mês/ano no formato mm/yyyy: ");
String[] monthYear = sin.next().split("/");
System.out.print("1 = Segunda\n2 = Terça\n3 = Quarta\n4 = Quinta\n5 = Sexta\n6 = Sábado\n7 = Domingo\nIntroduza o dia da semana em que começa o mês (1 a 7): ");
int firstDay = (int) UserInput.getNumberBetween(sin, 1, 7);
sin.close();
return new int[]{Integer.parseInt(monthYear[0]), Integer.parseInt(monthYear[1]), firstDay};
}
private static int monthDays(int month, int year) {
switch (month) {
case 2:
if (year % 100 == 0 ? year % 400 == 0 : year % 4 == 0)
return 29;
else
return 28;
case 4:
case 6:
case 9:
case 11:
return 30;
default:
return 31;
}
}
private static void printCalendar(int[] data, int monthDays) {
String[] monthNames = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"};
System.out.printf("\n%15s %d\n", monthNames[data[0]-1], data[1]);
System.out.println("Dom Seg Ter Qua Qui Sex Sab");
if (data[2] != 7)
for (int i = 0; i < data[2]; i++)
System.out.print(" ");
for (int monthDay = 1; monthDay <= monthDays; monthDay++) {
System.out.printf("%3d ", monthDay);
if ((monthDay + data[2]) % 7 == 0)
System.out.println();
}
}
}