J'ai le code suivant ci-dessous. Je dois retourner les valeurs mois et année de la méthode "getInput". Obtenir l'erreur comme instruction inaccessible. J'utilise BlueJ IDE. Comment obtenir des valeurs de retour de remorquage maintenant. S'il vous plaît aider.Obtenez deux valeurs de retour dans 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;
}
}
Il existe une classe 'java.time.YearMonth' que vous pourriez utiliser si vous utilisez Java 8. –
Une façon plus appropriée serait d'utiliser deux fonctions différentes: Une pour le mois, appelée' getMonth() ' et un pour l'année, appelé 'getYear()'. Donnera à chaque fonction une tâche bien définie. Cela ne s'applique pas si vous avez une certaine connexion avec les classes. Dans ce cas, vous voudrez peut-être une classe, afin que vous puissiez déplacer tout le travail de gestion du mois et de l'année dans cette classe. En dehors de cela, il serait tout à fait possible (et approprié) de gérer les invariants directement dans les getters. Cela va se débarrasser de la méthode 'ValidateInput()'. – patrik
En dehors de cela, je vous conseille également de commencer à apprendre un IDE plus couramment utilisé si vous envisagez de continuer avec Java en tant que travail. Les IDE les plus utilisés actuellement sont Intellij IDEA, Eclipse, Netbeans je pense. Choisissez l'un d'entre eux car ce sont ceux qui seront utilisés dans votre entreprise. – patrik