【问题标题】:Leap Year Calculations using Method [closed]使用方法的闰年计算[关闭]
【发布时间】:2017-07-09 00:30:55
【问题描述】:
import java.util.Scanner;

public class LeapYearTester{

   public static void main(String[] args){

      Scanner input = new Scanner(System.in);
      System.out.println("Please enter a year");
      int year_input = input.nextInt();

      // now make a Year object

      Year theYear = new Year(year_input);

      // now check to see if it's a leap year

         if (theYear.isLeapYear())
         System.out.println("That's a leap year!");
         else
         System.out.println("That's not a leap year!");
   }
}


    public class Year
    {
    // declare your instance variables here
    private int theYear;
    private int Year;

    // write your constructor here
    public Year(int y)
    {
    y=Year;
    }
    static boolean isLeapYear(final int Year) {
    return Year % 4 == 0 && (Year % 100 != 0 || Year % 400 == 0);
    //(((Year%4==0) || (Year%400)) && ((!Year%100==0) || (Year%400=0)))  
    }

}    

以上是主要的,不能更改。上课有问题。

【问题讨论】:

  • "上课有问题。"什么麻烦,哪个班?
  • 你有我的同情。现在你的问题是什么?
  • 为什么新手经常不看网站规则和要求就问,所有这些都可以在help center 部分轻松找到?原始发帖者,这个问题需要改进,包括努力描述你的代码、你的问题并提出一个具体的问题。
  • 气垫船:为什么我们仍然想知道?
  • 请注意,“我在使用 x 时遇到问题”并不是一个真正的问题 - 请参阅 Why is “Can someone help me?” not an actual question?

标签: java class methods leap-year


【解决方案1】:

除了添加检查以查看用户是否输入了有效年份,在这种情况下,使用正则表达式在 1000 和 2999 之间(我将把它作为任务留给您可以根据您认为的有效年份修改此代码):

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class LeapYearTester {
  public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    System.out.print("Please enter a year: ");
    String yearInput = "";
    String pattern = "^[12][0-9]{3}$";
    Pattern r = Pattern.compile(pattern);
    //checking is valid year
    while(input.hasNext()){
      yearInput = input.nextLine();
      Matcher m = r.matcher(yearInput);
      if(m.find()) {
        System.out.println("You entered the valid year: " + m.group(0));
        break;
      } else {
        System.out.println("Error: Not a valid year");
        System.out.print("Please enter a year between 1000 and 2999 inclusive: ");
      }
    }

    Year theYear = new Year(Integer.valueOf(yearInput));

    if(theYear.isLeapYear()) { 
      System.out.println("That's a leap year!");
    } else {
      System.out.println("That's not a leap year!");
    }
  }

  public static class Year {
    private int year;

    private Year(int y) {
      year = y;
    }

    private boolean isLeapYear() {
      if (year % 4 != 0) {
        return false;
      } else if (year % 400 == 0) {
        return true;
      } else if (year % 100 == 0) {
        return false;
      } else {
        return true;
      }
    }
  }
}

示例用法:测试闰年

Please enter a year:  2016
You entered the valid year: 2016
That's a leap year!

示例用法:无效输入和测试非闰年

Please enter a year:  3000
Error: Not a valid year
Please enter a year between 1000 and 2999 inclusive:  2015
You entered the valid year: 2015
That's not a leap year!

试试here!

【讨论】:

  • 1752 年不是第一个闰年。公历早在 1582 年就已在世界某些地区使用。但除此之外,儒略历也有闰年,可以追溯到公元前 45 年。此外,在计算中,我们经常使用 proleptic Gregorian 日历系统,它假定我们一直是 Gregorian。不管你怎么看,我们已经拥有它们很长时间了。 (1752 年是英国和美洲殖民地采用公历的时候)。这都在维基百科上,顺便说一句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2021-06-22
相关资源
最近更新 更多