У меня есть следующий ниже код. Мне нужно вернуть значения месяца и года из метода getInput. Получение ошибки в качестве недостижимого утверждения. Я использую BlueJ IDE. Как получить возвращаемые значения возврата. Пожалуйста помоги.Получите два значения возврата в JAVA
public class CalendarTester
{
public static void main(String[] args) { //method call for testing valid inputs from the user
nputValidate();
}
public static void InputValidate(){ //Method to call functions for validation of inputs
String UserInput="";
UserInput=getInput();
ValidateInput(UserInput);
}
public static String getInput(){ // To read user input
Scanner scanner=new Scanner(System.in);
System.out.println("Please enter the year (eg - 2016):");
String year = scanner.next();
System.out.println("Please enter the month (eg - 10):");
String month = scanner.next();
return year;
return month;
}
public static boolean ValidateInput(String toValidation){ // Method to validate inputs
boolean Pass=false;
String finalString=toValidation.replaceAll("\\s+","");
String matchingString="[0-9]{4,6}";
if(finalString.matches(matchingString)){
String Month=finalString.substring(0, 3);
String Year = finalString.substring(0, 4);
int month=Integer.parseInt(Month);
int year=Integer.parseInt(Year);
if(month>0 && month<=12){
if(year>999 & year<=10000){
Pass=true;
Calendar calender = new Calendar();
boolean isLeapYear=calender.isLeapYear((short) year);
if(isLeapYear){
System.out.println("The given year " +year+ " is a leap Year");
}else{
System.out.println("The given year " +year+ " is not a leap Year");
}
byte TotalDaysInMonth=calender.TotalDaysOfMonth((byte) month,(short) year);
System.out.println("Total days in the month " +month+ "are "+TotalDaysInMonth);
byte week=calender.firstDayOfYear((short) year);
String FirstDayOfWeek ="";
switch (week) { //Case for first day of the week
case 0:
FirstDayOfWeek="Mon";
break;
case 1:
FirstDayOfWeek="Tue";
break;
case 2:
FirstDayOfWeek="Wed";
break;
case 3:
FirstDayOfWeek="Thur";
break;
case 4:
FirstDayOfWeek="Fri";
break;
case 5:
FirstDayOfWeek="Sat";
break;
case 6:
FirstDayOfWeek="Sun";
break;
default:
FirstDayOfWeek="Invalid week input";
break;
}
System.out.println("The first day of the year"+year+"is "+FirstDayOfWeek);
byte firstmonthday = calender.firstDayOfMonth((byte) month,(short) year);
String dayName = "";
switch(firstmonthday)//to print the first day of the month
{
case 0: dayName = "Sat"; break;
case 1: dayName = "Sun"; break;
case 2: dayName = "Mon"; break;
case 3: dayName = "Tue"; break;
case 4: dayName = "Wed"; break;
case 5: dayName = "Thur"; break;
default: dayName = "Fri"; break;
}
System.out.println("The first day of the month" +month+ "is " + dayName);
calender.printMonth((byte) month,(short) year);
}else{
System.out.println("Invalid year input");
Pass=false;
InputValidate();
}
}
else if(month<=0 || month>12){ //validates the month entered
System.out.println("Invalid month input");
Pass=false;
InputValidate();
}
}
return Pass;
}
}
Существует класс 'java.time.YearMonth', который вы можете использовать, если используете Java 8. –
Более правильным способом было бы использовать две разные функции: один месяц, называемый' getMonth() ' и один год, называемый 'getYear()'. Дает каждой функции четко определенную задачу. Это не применяется, если у вас есть определенное соединение с классами. В этом случае вам может понадобиться класс, чтобы вы могли перемещать всю работу по обработке месяца и года в этот класс. Кроме того, вполне возможно (и правильно) обрабатывать инварианты непосредственно в геттерах. Это избавит вас от метода ValidateInput(). – patrik
Кроме того, я бы посоветовал вам начать изучение более часто используемой среды разработки, если вы планируете продолжить работу с Java. В настоящее время наиболее часто используемыми IDE являются Intellij IDEA, Eclipse, Netbeans, я думаю. Выберите один из них, так как они будут использоваться в вашей компании. – patrik