abc Programski jezik Java
Objektno orijentisano programiranje
Pozivanje klase

21. Mjesečni kalendar

import java.util.*;
public class MjesecniKalendar {

	public static void main(String[] args) {
		
		Scanner tastatura = new Scanner(System.in);
		System.out.print("Mjesec i godina kalendara: ");
		int mjesec = tastatura.nextInt();
		int godina = tastatura.nextInt();
		
		GregorianCalendar kalendar = new GregorianCalendar();
		
		int brojDana = 0;
		
		switch(mjesec) {
		case 1: case 3: case 5: case 7: case 8: case 10: case 12:
			brojDana = 31;
			break;
		case 2:
			if(kalendar.isLeapYear(godina))
				brojDana = 29;
			else
				brojDana = 28;
			break;
		case 4: case 6: case 9: case 11:
			brojDana =30;
			break;
		default:
			System.out.println("Greška: pogrešna specifikacija mjeseca!");
			System.exit(-1);
		}
		
		//Kalendar pocinje od prvog dana datog mjeseca i godine
		kalendar.set(godina, mjesec - 1, 1); //mjeseci pocinju od 0
		
		/* 	Funkcija Calendar.get vraca cijeli broj iz intervala [1, 7],
		 	1 => Nedelja, 2 => Ponedeljak, ..., 7 => Subota. */
		int prviDan = kalendar.get(Calendar.DAY_OF_WEEK);
		
		/* 	S obzirom da smo mi navikli da sedmica u kalendaru pocinje Ponedeljkom, a zavrsava Nedeljom,
		 	izmjenicemo promjenljivu prviDan da 1 predstavlja Ponedeljak, 2 Utorak, a 7 Nedelju.*/
		prviDan--;
		if(prviDan == 0)
			prviDan = 7;

		System.out.println("  PON  UTO  SRE  CET  PET  SUB  NED");
		
		int kolona = 0;  // trenutna kolona prikaza dana kalendara
		
		// Ispisi po 5 razmaka za svaki dan kog nema u prvom redu.
		for(int i = 1; i < prviDan; ++i, kolona++)
			System.out.print("     ");
			
		for (int dan = 1; dan <= brojDana; dan++){
			System.out.printf("%5d", dan);
			kolona++;
			if (kolona == 7) {
				System.out.println();
				kolona = 0;
			}	
		}
		System.out.println();
}}

Ispis na ekranu:

Index