【问题标题】:How to return many values in java in this example? [duplicate]在这个例子中,如何在 java 中返回多个值? [复制]
【发布时间】:2023-03-13 03:30:01
【问题描述】:

我有一种方法可以找到后天,但我不知道如何返回所有 3 个值日、月、年。请帮助我。任何帮助表示赞赏。在此先感谢。

public int dayInMonth(int day,int month,int year){
    //....
    return day;
}

public int theDayAfter(int day, int month, int year) {
    day++;
    int max=dayInMonth(day,month,year);
    if(day>max)
    {
        month++;
        if(month>12)
        {
            year++;
            month=1;
            day=1;
        }
    }
    return ;
}

【问题讨论】:

  • 您可以返回 int[]String Date。你想用这个做什么?因为看起来您正在尝试重新实现Calendar
  • 您不能从该方法返回 三个 int 值,因为返回类型只是 int。返回 one int 或更改返回类型。也许对于一个本身包含三个ints 的自定义类? (在这种情况下,这也是一个很好的方法参数。)
  • 将其返回为String?或int[3],每个索引都是一些东西
  • 呃,不要返回Stringint[]。如果这三个值在语义上形成了一个单一的结构,那么让它们成为一个结构。 (一个class。)
  • 不是字符串,没有。永远不要将不同的值编码为单个字符串,然后必须将其解析出来。 C.f Effective Java 2nd ed., #10.

标签: java


【解决方案1】:

这是一个有效的怀疑,一年前我也面临着类似的怀疑。

我发现从方法中返回此类值的最佳方式是以 Object 类型返回。在这个例子中,如果我要返回日、月和年,那么我将创建一个如下所示的类:

public class DateOfYear{
   public int day;
   public String month;
   public int year;

   public DateOfYear(int day, String month, int year){
       this.day = day;
       this.month = month;
       this.year = year;
   }
}

现在我将使用这个类 DateofYear 实例化它并将值作为对象发送。所以,如果你想得到月份中的哪一天,函数如下:

public DateOfYear dayInMonth(int day,int month,int year){
    //....
    return new DateOfYear(day,month,year);
}

调用函数可以简单地显示当前日期如下:

System.out.println("Day: "+dayInMonth(day,month,year).day);

theDayAfter 方法类似,只需更改返回类型并返回 DateOfYear 类型的对象。

public DateOfYear theDayAfter(int day, int month, int year) {
    day++;
    int max=dayInMonth(day,month,year);
    if(day>max)
    {
        month++;
        if(month>12)
        {
            year++;
            month=1;
            day=1;
        }
    }
    return new DateOfYear(day, month, year);
}

调用theDayAfter()的方法可以显示第二天如下:

 System.out.println("Next Day: "+theDayAfter(day,month,year).day);
 System.out.println("Month: "+theDayAfter(day,month,year).month);
 System.out.println("Year: "+theDayAfter(day,month,year).year);

【讨论】:

  • 非常感谢。它看起来像 C/C++ 中的类型结构,不是吗?
  • 绝对!即使在这两种语言中,我们也可以通过发送实例化结构来发送多个值。这是一个非常有用的诀窍:从一个函数发送多个值。感谢您将我的回复标记为答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 2012-11-03
  • 1970-01-01
  • 2012-01-23
  • 2021-10-15
  • 1970-01-01
  • 2021-11-10
相关资源
最近更新 更多