Создайте класс под названием Date. У Make Date есть статический метод, называемый getMonthName, который принимает целое число, а затем возвращает строковое представление имени соответствующего месяца. Числа 1-12 будут отображаться в январе-декабре соответственно. Если значение за пределами 1-12 передано, верните «Недействительный месяц». Просмотр требуемого выхода. Добавьте два конструктора в Date: один, который принимает целое число месяц, день и год. Другой, который принимает месяц String и целое число и год. Добавьте метод ToString, который возвращает дату является следующий формат: День Месяц, ГодНужна помощь В моем коде есть ошибки
Мой код выглядит следующим образом
public class Date
{
private static String[] monName;
private int month, day, year;
public static String getMonthName(int num)
{
if(num < 1 || num > 12)
{
return "invalid month";
}
else
{
String[] name = {" ", "January", "February", "March", "April", "May"
, "June", "July", "August", "September", "October","November", "December"};
return name[num];
}
}
public static int getMonthNumber(String monthName)
{
for(int n = 1; n <= 12; n++)
{
if (monthName.equalsIgnoreCase(monName[n]))
return n;
}
return -1;
}
public Date(int month, int day, int year)
{
this.month = month;
this.day = day;
this.year = year;
}
public Date (String month, int day, int year)
{
this(day, getMonthNumber(month), year);
}
public String toString()
{
String m = month + day + ", " + year;
return m;
}
}
тестовый код, чтобы запустить мой код
import java.util.Random;
public class DateDemo
{
public static void main(String[] args)
{
System.out.println("-- Number Tests --");
Random r = new Random(0);
for (int x = 0; x < 50; x++)
{
Date d = new Date(Math.abs(r.nextInt() % 12) + 1, //month
Math.abs(r.nextInt()) % 28, //day
1900 + r.nextInt() % 100); //year
System.out.println(d);
}
System.out.println("-- Month Name Tests --");
System.out.println(new Date("January", 1, 1970));
System.out.println(new Date("February", 1, 1970));
System.out.println(new Date("March", 1, 1970));
System.out.println(new Date("April", 1, 1970));
System.out.println(new Date("May", 1, 1970));
System.out.println(new Date("June", 1, 1970));
System.out.println(new Date("July", 1, 1970));
System.out.println(new Date("August", 1, 1970));
System.out.println(new Date("September", 1, 1970));
System.out.println(new Date("October", 1, 1970));
System.out.println(new Date("November", 1, 1970));
System.out.println(new Date("December", 1, 1970));
}
}
Ошибка что я получаю
Исключение в потоке «главный» java.lang.NullPointerException в Date.getMonthNu mber (Date.java:32) по дате. (Date.java:47) в DateDemo.main (DateDemo.java:19)
и месяц не отображается, только день и год , Пожалуйста помоги!!
Отличное право на вопрос ... -1 – Tdorno