Java 其他语句不打印行吗?

Java 其他语句不打印行吗?,java,if-statement,bluej,Java,If Statement,Bluej,我写了一个简单的程序,用来显示用户输入的int是否是闰年,如果是,是什么闰年 在程序运行期间,只要输入了一个不应该是闰年的数字,它就不会打印else语句 注意:这是在IDE BlueJ中编写的,所以io是自动导入的,因此我没有导入它 /** *读取用户输入的整数值并确定它是否为闰年 *创造的哦,男孩,我讨厌这个 *2019年9月9日 */ 导入java.util.Scanner; 公共课年 { 公共静态整型getYearString提示符 { 字符串换行符=System.getPropertyl

我写了一个简单的程序,用来显示用户输入的int是否是闰年,如果是,是什么闰年

在程序运行期间,只要输入了一个不应该是闰年的数字,它就不会打印else语句

注意:这是在IDE BlueJ中编写的,所以io是自动导入的,因此我没有导入它

/** *读取用户输入的整数值并确定它是否为闰年 *创造的哦,男孩,我讨厌这个 *2019年9月9日 */ 导入java.util.Scanner; 公共课年 { 公共静态整型getYearString提示符 { 字符串换行符=System.getPropertyline.separator; int值=0; 布尔标志=真; 一面旗帜 { 扫描仪扫描=新的ScannerSystem.in; System.out.printlnprompt+:; 尝试 { 值=scan.nextInt; flag=false; } catchjava.util.InputMismatchException e { System.out.println您输入的不是int。; System.out.printlnewline; } } 返回值; } 公共静态无效主字符串[]args { int year=getyear输入年份; 最后一年=第四年; 如果EAR%4==0{ 如果EAR%100>=1{ 如果EAR%400>=1{ System.out.println输入的年份:+year+与+leapYear+闰年相等。; } 否则{ System.out.println输入的年份:+year+不是闰年。; } } } } }
让我们看看你的if语句,记住闰年的规则

了解闰年 一般来说,闰年是一个可以被4整除的年份,即报表年份%4==0为真

但是:如果一年不是闰年,那么它可以被100整除。即,年份%100==0为真

例外情况:当它也可以被400整除时,也就是说,年份%400==0是真的-那么我们有一个闰年

基本上:被4整除会产生一个候选者——然后你必须进一步研究它才能做出最终决定

决策树 是闰年候选人吗?年份%4==0,否则:不显示闰年 每100年是闰年例外吗?年份%100==0,否则:显示非闰年 每400年是闰年例外吗?年份%400==0真=>显示闰年,假=>显示非闰年 您的实现 让我们先看看你的if语句

你的第一个if语句检查一年是否可以被四整除。这是为了让你知道你是否与闰年候选人打交道。所以这是正确的-但是你忘了处理这种情况,当一年不是闰年,所以这里你错过了一个可能不是闰年的输出

现在它变得有点混乱。你检查年份是否不能被100整除。如果闰年候选人不能被100整除,那就是闰年。因此,您可以输出成功,但您必须处理其他情况

第三个if嵌套在错误的if块中。它属于父对象的else块

提示 试着理解输入和输出是如何相互关联的,并试着找出每个if/else

每当编写if时,请考虑是否需要相应的else块

如果事情变得奇怪,尝试使用breadcrumb输出跟踪您的程序:System.out.println1;System.out.println2。。。在处理分支或循环的每一行上,如果,否则,切换,而。。。这将跟踪程序在命令行上执行的每个步骤。你可以使用它,直到你的学校鼓励你使用合适的IDE

不要忘记:熟能生巧

伪码扰流器 只有当你完全卡住的时候才使用这个

如果第%4年==0{ //这可能是闰年——我们需要进一步挖掘 如果年份%100==0{ 如果年份%400==0{ 印刷闰年 }否则{ 印刷不是闰年 } }否则{ 印刷闰年 } }否则{ 印刷不是闰年 }

要旨 您的某些逻辑不正确,并且您忘记实现else分支


HTH

哪些年份不起作用?由于外部Ifear%4==0,有许多非闰年将不会打印。很抱歉,我直到现在才看到这一点,但问题已经解决。感谢您的耐心,也非常抱歉我的回复太晚。感谢您提供了非常深入的答案。当我读更多的时候,我终于明白了闰年的这一部分。我只是个大傻瓜,忘了如何正确计算它们。就else分支而言,起初我没有意识到,但现在我真的感谢你和其他人。我只有一个其他分支连接到一个if语句,我最终意识到了这一点。所以我没有筑巢,而是做了一个
将所有if语句转换为单个语句,并要求在打印if语句时传递它们。如果这没有意义,我很抱歉,我的vocab不正常,但我理解错误。但是,是的,你完全正确,我忘了实现许多其他分支。。。我真的不知道嵌套是如何工作的,老实说,我只是想继续,让我的老师感到骄傲。因此,输入不匹配异常的try-catch和while循环。但是谢谢你的贡献,我发现我做错了什么。