Java 分离;如有其他",;声明

Java 分离;如有其他",;声明,java,if-statement,Java,If Statement,我需要的是知道如何将这两个部分拆分为if-else部分 public static int NextBday(int Bdays, int days){ int daysleft = 0; if (days > Bdays) { daysleft= (365+Bdays) - days; }else if(Bdays > days){ daysleft= Bdays-days; }if (Bda

我需要的是知道如何将这两个部分拆分为if-else部分

    public static int NextBday(int Bdays, int days){
int daysleft = 0;
     if (days > Bdays) {
        daysleft= (365+Bdays) - days;
    }else if(Bdays > days){
        daysleft= Bdays-days;            
    }if (Bdays == days + 1) {
        System.out.println("\nWow, your birthday is tomorrow!");
    }else if (Bdays == days){
        System.out.println("\nHappy birthday!");
    }
    System.out.println("\nYour birthday is in " +daysleft+ " days");
return daysleft;
如果你不能从混乱中分辨出我想要的是将If语句分成两个不同的部分,但仍然使用相同的方法。我需要做些什么才能使第二个if-else语句能够自己打印,而不必显示还剩多少天

e、 g.“哇,你的生日就在明天!”没有“你的生日还有1天”

和“生日快乐” 如果没有“您的生日在0天后”


保持简单最有帮助。有人需要完整的代码吗?如果有人感到困惑,我可以尝试用不同的措辞来回答这个问题。非常感谢所有帮助我们的人

首先检查==案例,如果==案例为真,则仅检查其他两个案例(如果两者都不存在)。

最简单的解决方案是添加return;最后两种if()情况中的语句:

    public static int NextBday(int Bdays, int days){
int daysleft = 0;
     if (days > Bdays) {
        daysleft= (365+Bdays) - days;
    }else if(Bdays > days){
        daysleft= Bdays-days;            
    }

    if (Bdays == days + 1) {
        System.out.println("\nWow, your birthday is tomorrow!");
    }else if (Bdays == days){
        System.out.println("\nHappy birthday!");
    } else
       System.out.println("\nYour birthday is in " +daysleft+ " days");
return daysleft;

Paul Tomblin的答案更清晰。

这听起来像是家庭作业,所以我会有点含糊,而不仅仅是给你答案

试着用英语描述函数的方式来思考代码。然后把它变成伪代码,然后变成真代码

“如果今天是某人的生日,就说生日快乐。或者,如果他们的生日是明天,就说‘哇’。否则就说离他们的生日还有多少天。”

伪代码:

if birthdayToday
    print happy birthday message
otherwise if birthdayTomorrow
    print wow message
otherwise
    print days remaining message

最后一步留给读者作为练习。

我会这样做,因为最可能的情况是(>1),所以我们将该选项放在第一个选项中

int diff = Bdays - days;
if (diff > 1){
    System.out.println("\nYour birthday is in " +diff+ " days");
}
else if (diff == 1){
    System.out.println("\nWow, your birthday is tomorrow!");
}
else{
    System.out.println("\nHappy birthday!");
}

如果(diff<0)diff+=365,我想你需要
或类似。是的,我只关注指定的if部分。-1;像这样重新排序是过早的优化。相反,使用“最可能”作为排序的理由是错误的;我们首先处理的案例是:(i)如果有区别的话,可以简化逻辑的其余部分;或者(ii)如果做不到这一点,则是更有趣的问题——因为这些问题应该引起代码读者的注意;特殊情况是特殊的。让编译器担心重新排序(即使编译器是
javac
)。这有什么不成熟之处?你的反对是荒谬的。最有可能的情况当然应该首先评估,特别是如果它是这里的363.2425倍。我看不出编译器是如何推断特定领域知识的。重新排序不会降低可读性,也不会影响您提到的其他事项。你应该在任何调用NextBday()的地方进行打印逻辑
int diff = Bdays - days;
if (diff > 1){
    System.out.println("\nYour birthday is in " +diff+ " days");
}
else if (diff == 1){
    System.out.println("\nWow, your birthday is tomorrow!");
}
else{
    System.out.println("\nHappy birthday!");
}
if(Bdays - days != 1 && Bdays != days){ //if it's not today or tomorrow
    int daysleft;
    System.out.println("\nYour birthday is in " + (daysleft = (int)((days > Bdays)?(365+Bdays-days):(Bdays-days))) + " days."); //print the message, and calculate the correct number of days on the spot
    return daysleft;
}
else{ //if it is today or tomorrow
    System.out.println(((Bdays == days)?"\nHappy Birthday!":"\nWow, your birthday is tomorrow!")); //If it's today, print happy birthday, if it's not today it must be tomorrow. 
    return Bdays - days;
}
 public static int NextBday(int Bdays, int days){
  int daysleft = getDaysLeft(Bdays,days);//move logic to a private function
  if (daysleft == 1)
   System.out.println("\nWow, your birthday is tomorrow!");
  else if (daysleft == 0)
   System.out.println("\nHappy birthday!");
  else        
   System.out.println("\nYour birthday is in " +daysleft+ " days");
  return daysleft;
 }

 private static int getDaysLeft(int Bdays, int days) {
  if (days > Bdays)
   return (365 + Bdays) - days;
  return Bdays - days; //no need to check for the < condition        
 }
 public static int NextBday(int Bdays, int days) {
    int daysleft = days > Bdays ? 365 + Bdays - days : Bdays - days;
     if (daysleft == 1)
        System.out.println("\nWow, your birthday is tomorrow!");
     else if (daysleft == 0)
        System.out.println("\nHappy birthday!");
     else
        System.out.println("\nYour birthday is in " + daysleft + " days");

    return daysleft;
    }