【问题标题】:Can anyone help me figure how to calculate what day it will be in 100 years? [duplicate]谁能帮我计算一下如何计算 100 年后的哪一天? [复制]
【发布时间】:2015-09-21 23:55:07
【问题描述】:

包分配2;

导入 java.util.Scanner;

公开课作业2 {

public static void main(String[] args) {
    Scanner stdIn = new Scanner(System.in);
    System.out.print("What is today?: ");
    String day = stdIn.nextLine();
    System.out.print("What year is it?: ");
    int year = stdIn.nextInt();

//for when the year IS a leap year

    if (day == "Tuesday" || (year % 400 == 0) || (year % 4 == 0) && (year % 100 != 0)) {
        System.out.println("In 100 years from " + day     " will be a Monday")
    } else if (day == "Wednesday" || (year % 400 == 0) || (year % 4 == 0) && (year % 100 != 0)) {
        System.out.println("In 100 years from " + day " will be a Tuesday")
    } else if (day == "Thursday" || (year % 400 == 0) || (year % 4 == 0) && (year % 100 != 0)) {
        System.out.println("In 100 years from " + day " will be a Wednesday")
    } else if (day == "Friday" || (year % 400 == 0) || (year % 4 == 0) && (year % 100 != 0)) {
        System.out.println("In 100 years from " + day " will be a Thursday")
    } else if (day == "Saturday" || (year % 400 == 0) || (year % 4 == 0) && (year % 100 != 0)) {
        System.out.println("In 100 years from " + day " will be a Friday")
    } else if (day == "Sunday" || (year % 400 == 0) || (year % 4 == 0) && (year % 100 != 0)) {
        System.out.println("In 100 years from " + day " will be a Saturday")
    }else if (day == "Monday" || (year % 400 == 0) || (year % 4 == 0) && (year % 100 != 0)) {
        System.out.println("In 100 years from " + day " will be a Sunday")



//This is for when the year IS NOT a leap year

    } else if (day == "Monday" || (year % 100 = 0)) {
        System.out.println("In 100 years from " + day " will be a Saturday")
    } else if (day == "Tuesday" || (year % 100 = 0)) {
        System.out.println("In 100 years from " + day " will be a Sunday")
    } else if (day == "Wednesday" || (year % 100 = 0)) {
        System.out.println("In 100 years from " + day " will be a Monday")
    } else if (day == "Thursday" || (year % 100 = 0)) {
        System.out.println("In 100 years from " + day " will be a Tuesday")
    } else if (day == "Friday" || (year % 100 = 0))
        System.out.println ("In 100 years from " + day " will be a Wednesday")
    } else if (day == "Saturday" || (year % 100 = 0))
        System.out.println("In 100 years from " + day " will be a Thursday"){
    } else if (day == "Sunday" || (year % 100 = 0))
        System.out.println("In 100 years from " + day " will be a Friday")
} 

}

编辑:这是我的大脑逻辑..如果你能理解它..这不是 java 逻辑。但是,如果您能阅读它,它会向您展示我所坚持的内容。

【问题讨论】:

  • 对不起,我是这个网站的新手。但是我到处搜索,看看是否可以看到一些例子来解决这个问题。我的问题是如何确定在包括闰年在内的 100 年内它将是“星期一、星期二等”的哪一天。我知道第二部分有点无关紧要,但它只是让我想起闰年规则的简单代码。我真的不知道从哪里开始..我在上入门课。谢谢。
  • 这可能没有帮助,但是...... 2115 年 9 月 21 日 will be a Saturday!更严重的是,您已经询问了如何做某事并发布了一些代码,但没有解释您卡在哪里。如果我们能看到你的思维过程,也许我们可以解释你哪里出错了,或者给你一些正确方向的提示;虽然我们可以提供正确的答案以及为什么它是正确的,但现在可以解决您的问题,但从长远来看,它并不能真正帮助您。
  • 可能想在正文中重申问题,并平滑代码块上的格式。
  • 是的,我不想要直接的答案,只是从哪里开始。在计算它将是哪一天的方程式部分。举个例子。如果没有闰年,那么在 100 年中,它只会是 36500 % 7 = 2。因此,如果您输入星期一,它将是星期三。所以我需要一个程序来.. 做到这一点.. 今天是几号? - 星期一 这是哪一年 - 2016 100 年后将是星期六。在提出问题后我只是不知道步骤。希望这可以解决问题。

标签: java


【解决方案1】:

我认为你的问题的答案很大程度上取决于你的教练希望你从练习中得到什么。

如果目标只是尽可能高效地完成工作,那么您可以使用 Java 类库中的日期相关类或第三方日期库。

您将使用哪些取决于您使用的 Java 版本。 对于 Java 6 或 7,您将使用 java.util.Date 和相关类。对于 Java 8,您将使用新的 java.time 类。

在 Java 6 或 7 中,您还可以使用第三方库 Joda-Time 库。 该库的作者也是 Java 8 java.time 库的主要贡献者,因此它们很相似。

或者,也许,你的老师希望你自己做数学?

无论如何,我不赞成简单地给某人回答显然是家庭作业的问题,所以我把剩下的留给你。

【讨论】:

    【解决方案2】:

    好的,我添加几行代码以从输入日期代码中获取 100 之后的日期代码如下:

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Scanner;
    
    public class Assignment2 {
    
        public static void main(String[] args) {
            Scanner stdIn = new Scanner(System.in);
            System.out.print("What is today in format (yyyy/MM/dd) eg. 2015/08/03 ?: ");
            String day = stdIn.nextLine();
            System.out.print("What year is it?: ");
            int year = stdIn.nextInt();
            System.out.println("100 years from " + day + " will be a ");
    
            //getting calendar instance
            Calendar after100Year = Calendar.getInstance();
    
            //date time format for conversion or parsing
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
            try {
                //Prasing string input date to date object
                Date inputDate = dateFormat.parse(day);
                //set time to calendar instance
                after100Year.setTime(inputDate);
    
                //add 100 year in input date
                after100Year.add(Calendar.YEAR, 100);
                System.out.println("After 100 year date will be : " + dateFormat.format(after100Year.getTime()));
    
            } catch (ParseException ex) {
                ex.printStackTrace();
            }
    
            if (year % 400 == 0) {
                System.out.println("This is a leap year");
            } else if ((year % 4 == 0) && (year % 100 != 0)) {
                System.out.println("This is a leap year");
            } else {
                System.out.println("This is not a leap year.");
            }
    
        }
    }
    

    【讨论】:

    • 简单地给某人完整的代码显然是家庭作业并不能帮助 OP 学习任何东西。 OP 明确要求提供方向,而不是完整的答案。
    • 是的,我要做的就是 if、else if、else 语句以及字符串名称和整数。我只是在课程的开始部分,所以基本上这就是我所要做的。他说这真的没那么难,但是我也只知道 Scanner/Random 哈哈。所以我什至不知道 developerbhuwan 的代码是什么。无论如何我都无法复制它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2023-03-10
    • 2021-08-26
    • 2016-03-23
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多