程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Java:闰年/if 语句中的优先级问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Java:闰年/if 语句中的优先级问题?

开发过程中遇到Java:闰年/if 语句中的优先级问题的问题如何解决?下面主要结合日常开发的经验,给出你关于Java:闰年/if 语句中的优先级问题的解决方法建议,希望对你解决Java:闰年/if 语句中的优先级问题有所启发或帮助;

我正在尝试确定给定年份是否为闰年。但是当你用闰年 1996 测试程序时,它表明 1996 不是闰年:

@H_403_3@import javax.swing.JOptionPane;

public class Leapyear{

    public static voID main (String[] args){
    
        var year = Integer.parseInt(JOptionPane.showinputDialog("Year: "));
        
    
        if(year%4==0 
            && year%100!=0

                ^year%4==0 
                    && year%100==0 
                    && year%400==0){
            JOptionPane.showmessageDialog(null,year + " is a leapyear!");
        }
        
        else{
            JOptionPane.showmessageDialog(null,year + " is not a leapyear!");
        }   
    }       
}

至于我:我认为这是一个优先级问题,因为^的优先级是8而&&的优先级是10,所以它会按以下顺序检查条件(以^开头):

@H_403_3@if(year%4==0 && (year%100!=0 ^ year%4==0) && year%100==0 && year%400==0){..}

我认为这就是为什么当您使用 1996 测试程序时,它不会执行 if 语句中的代码,而是执行 else 语句中的代码。如果是这样,有没有可能先检查^之前的条件?

非常感谢您的帮助!

解决方法

条件可以简化:

Boolean isLeapYear = (year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0));

大佬总结

以上是大佬教程为你收集整理的Java:闰年/if 语句中的优先级问题全部内容,希望文章能够帮你解决Java:闰年/if 语句中的优先级问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: