java - 错误 "this method must return a result of type int"?

标签 java compiler-errors

我下面有这段代码,它一直告诉我thanksgiving() 必须返回int 类型的结果。我已经转换了所有结果只是为了确定,但似乎没有任何效果!为什么我会收到此错误?

public class Thanksgiving
{
private static final int YEAR = 2000;  // first valid year for this method
private static final int NOV1 = 3;     // 2000/11/01 falls on a Wednesday
private static final int THURS = 4; // (Sun = 0, Mon = 1, ..., Sat = 6)

// Precondition: year > 1999
public static int thanksgiving(int year)
{
  int day = firstOfMonth( year );
  if ( day == THURS ) 
  {
    return (int) 22;
  }
  if ( day > THURS )
  {
    return (int) 29 - ( day - THURS );
  }
  if ( day < THURS )
  {
    return (int) 22 + ( THURS + day );
  }
}
public static int firstOfMonth(int year)
{
  int raw = year - 2000;
  int day = NOV1;
  for(int i = 0; i < raw; i++ )
  {
    if( i % 4 == 0 )
    {
      day = day + 2;
    }
    else
    {
      day++;
    }
  }
  return day % 7;
}

public static void main(String[] args)
{

    for(int year = 2000; year <= 2100; year++)
    {
        System.out.print("T'giving " + year + " is Nov " + thanksgiving(year) + "; ");
        if (year % 3 == 1)
        {
            System.out.println();
        }
    }
}

}

最佳答案

在此代码中:

public static int thanksgiving(int year)
{
  int day = firstOfMonth( year );
  if ( day == THURS ) 
  {
    return (int) 22;
  }
  if ( day > THURS )
  {
    return (int) 29 - ( day - THURS );
  }
  if ( day < THURS )
  {
    return (int) 22 + ( THURS + day );
  }
}

您正在几个 if block 中编写 return 语句。如果它们都不是真的怎么办?编译器不允许这样做,您应该在底部返回默认值或抛出异常。或者制作一些 if 语句 else - if 加上最后一个 else:

public static int thanksgiving(int year){
  int day = firstOfMonth( year );
  if ( day == THURS ) {
    return (22;
  } else if ( day > THURS ) {
    return 29 - ( day - THURS );
  } else { // else without the if
    // we know that ( day < THURS )
    return 22 + ( THURS + day );
  }
}

另外:

  • 不需要将 int 转换为 int。
  • 一个不相关的问题是您的代码使用了大量“魔术”数字,您需要避免使用它们。

关于java - 错误 "this method must return a result of type int"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27216354/

相关文章:

java - Android .aar 库接口(interface)参数名称丢失

c - C : Reasoning for the compilation error while using linker file variables

java - 处理@DiscriminatorColumn 中的 NULL 值

java - 在android工作室:how I can create two tables with references?

java - 方法不明确

c++ - 在 g++ 而不是 VisualStudio 上编译错误

c++ - 错误 C1090 : PDB API call failed, 错误代码 '0':'

c - 使用gcc编译C源代码时的问号

java - 在java中的每个奇数数组输出之间插入逗号

java - 如何使用 Java 从 Maven Nexus 存储库下载 Artifact 列表