Надеюсь, я правильно понял вашу проблему.
Проблема в том, что ваш пользователь может запустить метод без действительного аргумента. Если у вас есть фронтенд, то вы тоже должны его там поймать. Но в бэкэнде (java) вы можете работать с блоком try или просто с if-else.
Приведите целое число в строку, а затем используйте регулярное выражение (возможно, что-то вроде этого
String text = num + "";
if (text != null && text.matches("\\d+")) {
//...
}
Или вы можете преобразовать Integer в String и использовать String.isEmpty (). IsEmpty возвращает true тогда и только тогда, когда length () равен 0. (https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#isEmpty () ).
Sting temp = num + "";
if (num.isEmpty()) {
//...
}
Или просто блок try-catch, в котором вы вводите данные в новую переменную.
try {
Month = Integer.parseInt(num);
} catch (NumberFormatException e) {
// handle error
}
И обратите внимание, что ваша переменная «Месяц» должна быть «месяц». В большинстве сообществ программистов каждый использует переменные в нижнем регистре.
Существует бесчисленное множество вариантов, как вы можете справиться с этой ситуацией, и вы можете попробовать каждый из них. Я надеюсь, что все перечисленные мною верны.
Изменить: О, и я проверил другие комментарии, и я заметил, что вы новичок. Вот, возможно, несколько полезных советов, чтобы каждый в вашем классе, включая учителя, мог легче читать ваш код. В большинстве языков программирования есть что-то вроде "checkstyle" ". Это трудно объяснить, но с помощью Google вы можете найти полезные советы.
Я сделаю несколько «предложений» по вашему коду, которые вы можете принять или проигнорировать. Например, пробелы между некоторыми символами, некоторые комментарии, et c. Но не зацикливайтесь на качестве. В некоторых IDE вы можете автоматически форматировать свой код до «стандартного». С Intellij это так. ctrl + alt + l
import java.util.Calendar;
public class myCalendar {
private Calendar calendar = Calendar.getInstance();
private int day = calendar.get(Calendar.DAY_OF_WEEK);
private int date = this.calendar.get(Calendar.DAY_OF_MONTH);
private int month = calendar.get(Calendar.MONTH) + 1;
private int year = calendar.get(Calendar.YEAR);
/**
* Description what the method does.
*
* @param Year what does the parameter?
* @param Month ""
* @param Date ""
*/
public void setCalendar(int Year, int Month, int Date) {
this.calendar.set(Year, Month - 1, Date);
}
public int getDay() {
return day;
}
public int getDate() {
return date;
}
public int getMonth() {
return month;
}
public int getYear() {
return year;
}
/**
* Description what the method does.
*
* @return value (short description)
*/
public int getFirstDay() {
Calendar test = this.calendar;
test.set(year, month - 1, 1);
return test.get(Calendar.DAY_OF_WEEK) - 1;
}
/**
* Description what the method does.
*
* @param num (short description)
* @return (short description)
*/
public int getMonthSize(int num) {
int month;
int days = 0; //My IDE tells me that need to be initialized, but why? Are there cases where the method returns 0?
//I think that num=100 returns 0, so maybe you can catch this case with if(num > 12) or something similar
if (num > 0) {
month = num;
} else {
month = this.month;
}
if (month == 1 || month == 3 || month == 5 || month == 7
|| month == 8 || month == 10 || month == 12) {
days = 31;
}
if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
}
if (month == 2) {
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
days = 29;
} else {
days = 28;
}
}
return days;
}
public String getNow() {
String monthNames[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
String a = monthNames[month - 1] + ", " + String.valueOf(year);
return a;
}
}