2014-10-01 241 views
1
import java.util.*; 
public class LeapYear 
{ 
    public static void main (String[]args) 
    { 
     Scanner scan= new Scanner (System.in); 
     System.out.println("Please enter in the year"); 
     int year=scan.nextInt(); 
     if (year % 4 ==0) 
     { 
      { 
       if (year % 100 ==0); 
       else 
        System.out.println("The year,"+year+",is a leap year!"); 
      } 
      if(year % 400==0) 
       System.out.println("The year, "+year+",is a leap year!"); 
     } 
     else 
      System.out.println("The year, "+year+",is not a leap year!"); 
    } 
} 

嘿大家好!以上是我为闰年程序编写的代码 - 它似乎运行良好,除非输入数字(如3000或300),否则JVM会停止并关闭终端窗口。有人请指导为什么它不接受这些数字(另外,请原谅我的代码格式不正确 - 我是新的,并尽力做到最好) 注意:它显示所有正确的答案时我测试了1900年,1996年,2004年,164年和204年。它不会接受300或3000. 再次感谢!闰年计划

+3

一条建议,特别是学习Java时,在if语句之后的所有大括号中添加一条建议。如果你有空的if语句和if语句结束的地方,它会使它更清晰。 – mdewitt 2014-10-01 01:30:21

+0

看来你需要阅读更多关于'||'(或),'&&'(和),'!'(不)或逻辑运算符像'!='(不等于)的关系。这可以让你创建像'if(year%X == 0 ||(year%Y == 0 && year%Z!= 0)'这样的表达式) - 试着找出应该用什么值代替'X ''Y'和'Z'所以它可以解决你的任务。 – Pshemo 2014-10-01 01:44:09

+0

供参考:'java.time.Year(2017).isLeap()' – 2017-06-21 06:32:48

回答

1

你问我们原谅你的格式,但它是你的格式,导致你错过了这个问题。特别是当你第一次开始时,如果你非常勤奋的格式化,你会发现最有助于理解发生了什么。建议:即使它们是可选的,也应始终包含大括号,并始终提供每个'if'语句的'else'部分。因此:

if (condition) { 
    action; 
} else { 
    alternative action; 
} 

就你而言,你会在你的第11和12行看到你的句法正确的代码,但很可能不是你的意思。第11行的大括号似乎不合适,第12行末尾的分号只是代替了如果条件成立就会发生的“动作”。

if ((year % 4) == 0) { 
    // could be a leap year 
    if ((year % 100) == 0) { 
     // could be a leap year too 
     if ((year % 400) == 0) { 
      println("yes, this is a leap year ... divisible by 4, 100, AND 400"); 
     } else { 
      // not a leap year ... divisible by 4 and 100, but NOT 400 
     } 
    } else { 
     println("yes, this is a leap year ... it's divisible by 4 but not 100"); 
    } 
} else { 
    // absolutely not a leap year 
} 
3

检查下列行:

if (year % 100 ==0); 
else 

300%100 == 0,没有输出。

1

你可以让你的代码更简洁,如果你这样做,而不是:

if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { 
    System.out.println("The year,"+year+",is a leap year!"); 
} else { 
    System.out.println("The year, "+year+",is not a leap year!"); 
} 

此外,请注意这个公式来计算闰年只有“1583”之后的作品多年。

+0

和IMO更新。 +1 – 2014-10-01 01:59:49