java - JAVA中获取两个返回值

标签 java bluej

<分区>

我有以下代码。我需要从“getInput”方法返回月份和年份值。获取错误作为无法访问的语句。我正在使用 BlueJ IDE。现在如何获取拖车返回值。请帮忙。

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 惯用方法是创建一个新类,其中包含您希望作为成员返回的内容:

public static class Foo
{
    String year;
    String month;
}

返回一个实例

您会发现这是扩展 效果最好的方法。最终您将向这个 添加各种其他功能。

您甚至可能会注意到它与某些标准类(java.util.Date 和较新的 java.time.LocalDate)太相似了,因此放弃了整件事。

关于java - JAVA中获取两个返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40969592/

相关文章:

java - BlueJ 计算器

java - 如何返回教科书,使其不被设置为空?

java - if 语句和 for 循环中 ArrayList 的问题

java - 没有注释的 ArangoDB Java 驱动程序边缘

java - 从我的 Android 应用程序链接到 Facebook 应用程序中的页面

java - 服务器未接收 Java 应用程序写入套接字的字节

java - 如何从抽象类中调用方法

java - 如何使用外部参数更改数组中元素的值?

java - 如何在 UML 方法中表示泛型参数?

java - 为什么我在 Java 中收到 NoClassDefFoundError 错误?