simplest
simplest

Reputation: 217

Creating Constructors and Methods with Months

I fixed my setMonthnum method, but now my input will set the month number to 0, 13, etc. based off of my input. I need to know how to go and ask again for input and not to set my Monthnum to the incorrect input. If you have any suggestions to simply better my code, please feel free to state them! My code is as follows:

import java.util.Scanner;

public class whichMonth {

    public static void main(String args[]){

        Scanner input = new Scanner(System.in);
        System.out.println("Please enter the month name or number: ");
        int monthNumber = input.nextInt();


        //set up variable access to the class
        AnyMonth inputMonthNumber = new AnyMonth();

        // set the month number from user input
        inputMonthNumber.setMonthnum.input.nextInt(monthNumber);

        // get the month name from user input number
        String monthName = inputMonthNumber.getMonthName(monthNumber);
    }
}

class AnyMonth {

   int Monthnum;
   String monthName;

   public AnyMonth() {

      Monthnum = 1;
   }
   public AnyMonth(int currentMonthNumber) {

      Monthnum = currentMonthNumber;

      switch(currentMonthNumber) {
         case 1:
            Monthnum = 1;
            monthName = "January";
            System.out.println("January");
            break;
         case 2:
            Monthnum = 2;
            monthName = "February";
            System.out.println("February");
            break;
         case 3:
            Monthnum = 3;
            monthName = "March";
            System.out.println("March");
            break;
         case 4:
            Monthnum = 4;
            monthName = "April";
            System.out.println("April");
            break;
         case 5:
            Monthnum = 5;
            monthName = "May";
            System.out.println("May");
            break;
         case 6:
            Monthnum = 6;
            monthName = "June";
            System.out.println("June");
            break;         
         case 7:
            Monthnum = 7;
            monthName = "July";
            System.out.println("July");
            break;         
         case 8:
            Monthnum = 8;
            monthName = "August";
            System.out.println("August");
            break;         
         case 9:
            Monthnum = 9;
            monthName = "September";
            System.out.println("September");
            break;         
         case 10:
            Monthnum = 10;
            monthName = "October";
            System.out.println("October");
            break;
         case 11:
            Monthnum = 11;
            monthName = "November";
            System.out.println("November");
            break;
         case 12:
            Monthnum = 12;
            monthName = "December";
            System.out.println("December");
            break;
         default:
            Monthnum = 1;
            monthName = "January";
      } 

   } 

   public AnyMonth(String userMonthName) {

      switch(userMonthName) {
         case "January":
            Monthnum = 1;
            monthName = "January";
            System.out.println("January");
            break;
         case "February":
            Monthnum = 2;
            monthName = "February";
            System.out.println("February");
            break;
         case "March":
            Monthnum = 3;
            monthName = "March";
            System.out.println("March");
            break;
         case "April":
            Monthnum = 4;
            monthName = "April";
            System.out.println("April");
            break;
         case "May":
            Monthnum = 5;
            monthName = "May";
            System.out.println("May");
            break;
         case "June":
            Monthnum = 6;
            monthName = "June";
            System.out.println("June");
            break;         
         case "July":
            Monthnum = 7;
            monthName = "July";
            System.out.println("July");
            break;         
         case "August":
            Monthnum = 8;
            monthName = "August";
            System.out.println("August");
            break;         
         case "September":
            Monthnum = 9;
            monthName = "September";
            System.out.println("September");
            break;         
         case "October":
            Monthnum = 10;
            monthName = "October";
            System.out.println("October");
            break;
         case "November":
            Monthnum = 11;
            monthName = "November";
            System.out.println("November");
            break;
         case "December":
            Monthnum = 12;
            monthName = "December";
            System.out.println("December");
            break;
         default:
            Monthnum = 1;
            monthName = "January";

      }    

   }

   public void setMonthnum (int userMonth) {

      Monthnum = userMonth;

      if (userMonth < 1 || userMonth > 12){
         System.out.println("Invalid input");
         this.Monthnum = userMonth;
      } 

   }

   public int getMonthnum(int currentMonthNumber) {

      Monthnum = currentMonthNumber; 

      return currentMonthNumber;

   }

   public String getMonthName(int currentMonthName) {

      Monthnum = currentMonthName;
        // use swtich-case here instead, default case should return 1/Jan
      switch(currentMonthName) {
         case 1:
            monthName = "January";
            break;
         case 2:
            monthName = "February";;
            break;
         case 3:
            monthName = "March";
            break;
         case 4:
            monthName = "April";
            break;
         case 5:
            monthName = "May";
            break;
         case 6:
            monthName = "June";
            break;         
         case 7:
            monthName = "July";
            break;         
         case 8:
            monthName = "August";
            break;         
         case 9:
            monthName = "September";
            break;         
         case 10:
            monthName = "October";
            break;
         case 11:
            monthName = "November";
            break;
         case 12:
            monthName = "December";
            break;
         default:
            monthName = "January";

      }
      return monthName;
    }

    public String toString(String monthNameToString){

      monthName = monthNameToString;

      return monthNameToString;

    }

    public boolean equals(int month) {

        if (Monthnum == month) {
            return true;
        } 
        else {
            return false;
        }
    }

    public boolean greaterThan(int month) {

        if (Monthnum > month) {
            return true;
        } 
        else {
            return false;
        }
    }

    public boolean lessThan(int month) {

        if (Monthnum < month) {
            return true;
        } 
        else {
            return false;
        }

    }

}

Upvotes: 1

Views: 41

Answers (1)

Darshan Mehta
Darshan Mehta

Reputation: 30839

change

inputMonthNumber.setMonthnum.input.nextInt(monthNumber);

to

inputMonthNumber.setMonthnum(monthNumber);

Also, in all the getXXX methods, remove the below statement:

Monthnum = currentMonthName;

Getters are desiged to return the value. Setting the values via getter methods is not a good practice. This article explains why getters and setters are needed any how to write them :)

Upvotes: 1

Related Questions