Well, it is supposed that my code should print in some months 31 days according to one of my conditions but it does not in fact print one day less in every month.
If someone can help me and check my code would be very helpful, I know there are things that could be simplified but I'm just learning.
Thanks in advance
import java.util.Scanner;
public class CalFinal{
public static void main (String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("Insert Year:");
int year =sc.nextInt();
if (year <= 0){
System.out.println( year + " Is an invalid Year");
}
for (int mo = 1 ; mo <= 12 ; mo++){
int days = daysOfMonth(year, mo);
int countDays = 0;
if (mo == 1 ){
System.out.println(" January");
System.out.println("Su\tMo\tTu\tWe\tTh\tFr\tSa");
for (int dy = 1; dy < days; dy++){
System.out.print(""+dy + "\t") ;
countDays ++;
if (countDays == 7){
System.out.println() ;
countDays = 0;
}
}
System.out.println() ;
}else if (mo == 2 ){
System.out.println(" February");
System.out.println("Su\tMo\tTu\tWe\tTh\tFr\tSa");
for (int dy = 1; dy < days; dy++){
System.out.print(""+dy + "\t") ;
countDays ++;
if (countDays == 7){
System.out.println() ;
countDays = 0;
}
}
System.out.println() ;
}else if (mo == 3 ){
System.out.println(" March");
System.out.println("Su\tMo\tTu\tWe\tTh\tFr\tSa");
for (int dy = 1; dy < days; dy++){
System.out.print(""+dy + "\t") ;
countDays ++;
if (countDays == 7){
System.out.println() ;
countDays = 0;
}
}
System.out.println() ;
}else if (mo == 4 ){
System.out.println(" April");
System.out.println("Su\tMo\tTu\tWe\tTh\tFr\tSa");
for (int dy = 1; dy < days; dy++){
System.out.print(""+dy + "\t") ;
countDays ++;
if (countDays == 7){
System.out.println() ;
countDays = 0;
}
}
System.out.println() ;
}else if (mo == 5 ){
System.out.println(" May");
System.out.println("Su\tMo\tTu\tWe\tTh\tFr\tSa");
for (int dy = 1; dy < days; dy++){
System.out.print(""+dy + "\t") ;
countDays ++;
if (countDays == 7){
System.out.println() ;
countDays = 0;
}
}
System.out.println() ;
}else if (mo == 6 ){
System.out.println(" June");
System.out.println("Su\tMo\tTu\tWe\tTh\tFr\tSa");
for (int dy = 1; dy < days; dy++){
System.out.print(""+dy + "\t") ;
countDays ++;
if (countDays == 7){
System.out.println() ;
countDays = 0;
}
}
System.out.println() ;
}else if (mo == 7 ){
System.out.println(" July");
System.out.println("Su\tMo\tTu\tWe\tTh\tFr\tSa");
for (int dy = 1; dy < days; dy++){
System.out.print(""+dy + "\t") ;
countDays ++;
if (countDays == 7){
System.out.println() ;
countDays = 0;
}
}
System.out.println() ;
}else if (mo == 8 ){
System.out.println(" August");
System.out.println("Su\tMo\tTu\tWe\tTh\tFr\tSa");
for (int dy = 1; dy < days; dy++){
System.out.print(""+dy + "\t") ;
countDays ++;
if (countDays == 7){
System.out.println() ;
countDays = 0;
}
}
System.out.println() ;
}else if (mo == 9 ){
System.out.println(" September");
System.out.println("Su\tMo\tTu\tWe\tTh\tFr\tSa");
for (int dy = 1; dy < days; dy++){
System.out.print(""+dy + "\t") ;
countDays ++;
if (countDays == 7){
System.out.println() ;
countDays = 0;
}
}
System.out.println() ;
}else if (mo == 10 ){
System.out.println(" October");
System.out.println("Su\tMo\tTu\tWe\tTh\tFr\tSa");
for (int dy = 1; dy < days; dy++){
System.out.print(""+dy + "\t") ;
countDays ++;
if (countDays == 7){
System.out.println() ;
countDays = 0;
}
}
System.out.println() ;
}else if (mo == 11){
System.out.println(" November");
System.out.println("Su\tMo\tTu\tWe\tTh\tFr\tSa");
for (int dy = 1; dy < days; dy++){
System.out.print(""+dy + "\t") ;
countDays ++;
if (countDays == 7){
System.out.println() ;
countDays = 0;
}
}
System.out.println() ;
}else{
System.out.println(" December");
System.out.println("Su\tMo\tTu\tWe\tTh\tFr\tSa");
for (int dy = 1; dy < days; dy++){
System.out.print(""+dy + "\t") ;
countDays ++;
if (countDays == 7){
System.out.println() ;
countDays = 0;
}
}
System.out.println() ;
}
}
}
public static boolean isLeapYear(int year){
if ((year % 4 == 0) && (year % 100 != 0 ) || (year % 400 == 0)){
return true;
}else{
return false;
}
}
public static int daysOfMonth (int year, int month){
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){
return 31;
}else if(month == 2){
if(isLeapYear(year)){
return 29;
}else{
return 28;
}
}else{
return 30;
}
}
}