Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JAVA中获取两个返回值_Java_Bluej - Fatal编程技术网

在JAVA中获取两个返回值

在JAVA中获取两个返回值,java,bluej,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 sta

我有以下代码。我需要从“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;
    }
}
公共类日历测试器
{
publicstaticvoidmain(String[]args){//用于测试用户有效输入的方法调用
nputValidate();
}
公共静态void InputValidate(){//方法调用函数以验证输入
字符串UserInput=“”;
UserInput=getInput();
验证输入(用户输入);
}
公共静态字符串getInput(){//读取用户输入
扫描仪=新的扫描仪(System.in);
System.out.println(“请输入年份(如-2016):”;
字符串年份=scanner.next();
System.out.println(“请输入月份(如-10):”;
字符串月份=scanner.next();
回归年;
返回月份;
}
公共静态布尔ValidateInput(String-toValidation){//验证输入的方法
布尔传递=假;
字符串finalString=toValidation.replaceAll(“\\s+”,”);
字符串匹配字符串=“[0-9]{4,6}”;
if(finalString.matches(matchingString)){
字符串月份=finalString.substring(0,3);
字符串年份=最终字符串。子字符串(0,4);
int month=整数.parseInt(月);
int year=整数。parseInt(年);

如果(月>0和月>999和年返回包含2个值的1数组

返回包含2个值的1数组

尝试使用数组,您可以指定2个或更多值:

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 new String[]{year,month};
}

尝试使用数组,可以指定2个或更多值:

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 new String[]{year,month};
}

Java惯用的方法是创建一个新类,其中包含要作为成员返回的内容:

public static class Foo
{
    String year;
    String month;
}
return
一个实例

您会发现这是一种可扩展性最好的方法。最终,您将为此
类添加各种其他功能


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

java惯用的方法是创建一个新类,其中包含您希望作为成员返回的内容:

public static class Foo
{
    String year;
    String month;
}
return
一个实例

您会发现这是一种可扩展性最好的方法。最终,您将为此
类添加各种其他功能


您甚至可能会注意到它与一些标准类(
java.util.Date
和较新的
java.time.LocalDate
)太相似了,因此完全放弃了所有内容。

可能不是数组。可能是
java.time.LocalDate
(您忽略了day字段)。甚至是一个
java.time.YearMonth
。是的,这可以解决这个特殊情况。但通常,我认为,如果您想要返回两个或多个独立值的对象,您可以始终使用包含它们的
数组(如果对象也是不同类型的)然后将使用
ArrayList
而不是数组,但可能不是数组。可能是
java.time.LocalDate
(其中忽略day字段)。甚至是一个
java.time.YearMonth
。是的,这可以解决这个特殊情况。但通常,我认为,如果您想要返回两个或多个独立值的对象,您可以始终使用包含它们的
数组(如果对象也是不同类型的)然后将使用
ArrayList
而不是如果您使用java 8,则可能需要使用
java.time.YearMonth
类。更合适的方法是使用两个不同的函数:一个用于月,称为
getMonth()
另一个用于年,称为
getYear()
。将为每个函数提供一个定义良好的任务。但是,如果您与类有一定的连接,则不适用于此。在这种情况下,您可能需要一个类,以便您可以将处理月份和年份的所有工作移到此类。除此之外,这是完全可能的(并且是适当的)直接在getter中处理不变量。这将摆脱
ValidateInput()
method。除此之外,如果您打算继续使用Java作为工作,我还建议您开始学习更常用的IDE。我认为当前使用最多的IDE是Intellij IDEA、Eclipse和Netbeans。选择其中一种,因为它们将在您的公司中使用。有一个
Java.time.YearMonth
类如果您使用的是Java 8,则可能需要使用。更合适的方法是使用两个不同的函数:一个用于月份,称为
getMonth()
,另一个用于年份,称为
getYear()
。将为每个函数提供一个定义良好的任务。但是,如果您与类有一定的连接,则不适用于此。在这种情况下,您可能需要一个类,以便您可以将处理月份和年份的所有工作移到此类。除此之外,这是完全可能的(并且是适当的)直接在getter中处理不变量。这将摆脱
ValidateInput()
method。除此之外,如果您打算继续使用Java作为工作,我还建议您开始学习更常用的IDE。我认为目前使用最多的IDE是Intellij IDEA、Eclipse和Netbeans。选择其中一种,因为它们将在您的公司中使用。我们现在似乎也有
Java.time.YearMonthjava.time.YearMonth