Задача на java: написать программу, что будет выводить все дни твоего рождения на 5 лет вперед двумя способами: просто все в main, что изи, и с помощью ООП. И во втором случае после выполнения, причем правильного, выводится куча ошибок. С ООП я пока не слишком разобрался, и пока очень сложно понять, в чем собственно причина
package birthday;
public class Dispatcher {
public static void main(String[] args) {
Birthday bd = Controller.bd(2019, 5,13);
}
}
package birthday;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
public class Controller {
public static Birthday bd(int y, int m, int d){
GregorianCalendar gc = new GregorianCalendar();
SimpleDateFormat df = new SimpleDateFormat("EEEE, d MMMM yyyy");
while (y<=2024) {
gc.set(y, m, d);
Date date = gc.getTime();
System.out.println(df.format(gc.getTime()));
y++;
}
return (bd(y,m,d));
}
}
package birthday;
public class Birthday {
private int year;
private int month;
private int day;
public Birthday(int y, int m, int d){
this.year = y;
this.month = m;
this.day = d;
}
}
Ваш код работает в принципе неправильно. Дни недели, которые он выводит в консоль, не соответствуют датам. А ошибка, которую вы получаете, возникает потому, что ваш метод bd вызывает сам себя return (bd(y,m,d)) и это происходит бесконечно, в связи с чем у вас заканчивается память. А в целом есть принцип YAGNI под названием KISS, что означает "сделай это проще". Эта задача решается из коробки и очень просто. А еще обратите внимание на пакет java.time он появился в java 8 и заменил java.util.Date (это вообще позор java, как по мне). Посему настоятельно рекомендуется пользоваться именно java.time.
import java.time.LocalDate;
import java.time.format.TextStyle;
import java.util.Locale;
class Dispatcher {
public static void main(String[] args) {
getDirhday(2019, 5, 13, 5);
}
private static void getDirhday(int y, int m, int d, int count) {
for (int i = y; i < y+count+1; i++)
System.out.println(LocalDate.of(i, m, d) + " : " +
LocalDate.of(i, m, d).getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.forLanguageTag("ru")));
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Метод fillInStackTrace(), реализованный в классе Throwable позволяет получить объект типа Throwable, с сохранением трассировки стека вызывающего объекта...
Нужен наиболее простой способ вызвать NullPointerException
Сколько попыток понадобится сделать компьютеру чтобы подобрать из рандомных букв слово которое вы ввели?
Не совсем понимаю как можно полностью вытащить изображение по url с помощью SpringУ меня простой REST контроллер post