java编程实现:输入任意1900从年到2400年之间的8位数的一个日期(日期格式例子:20221014,),显示日期所对应的是星期几不使用自带函数
时间: 2023-09-18 11:06:14 浏览: 259
### 回答1:
好的,让我来为您解答这个问题。
这个问题其实可以使用基姆拉尔森计算公式来解决,该公式是一个用于计算某一天是星期几的公式。需要注意的是,该公式中的年份是以其后两位数为准。
具体的计算公式如下:
W = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400 + 1) % 7
其中,W 表示该日期所对应的星期几,其中 0 表示星期日,1 表示星期一,以此类推;d 表示日期中的日,m 表示日期中的月,y 表示日期中的年。
根据这个公式,我们可以写出下面的代码来实现您的需求:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String date = input.nextLine();
int year = Integer.parseInt(date.substring(0, 4));
int month = Integer.parseInt(date.substring(4, 6));
int day = Integer.parseInt(date.substring(6, 8));
if (month < 3) {
year -= 1;
month += 12;
}
int c = year / 100;
int y = year % 100;
int W = (day + 2 * month + 3 * (month + 1) / 5 + y + y / 4 - c / 4 - 2 * c + 7) % 7;
String[] week = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
System.out.println(week[W]);
}
}
希望这个答案可以帮助您解决问题!
### 回答2:
要实现输入任意1900年到2400年之间的8位数的日期,然后计算日期对应的星期几,可以按照以下步骤进行编程实现:
1. 首先,根据输入的8位数的日期,将其拆分为年、月、日三个部分。例如,对于输入的日期20221014,可以使用字符串的substring方法,将字符串的前四位作为年,接下来两位作为月,最后两位作为日。
2. 接下来,需要计算从1900年1月1日到输入日期的总天数。可以使用一个循环,从1900年开始逐年遍历到输入日期的年份,累加闰年的366天和平年的365天。
3. 在这个循环中,还需要判断每个月份有多少天。对于非闰年的二月份,天数为28天。对于闰年的二月份,天数为29天。其他月份的天数可以根据其月份来判断。
4. 累加完年份的天数后,还需要累加上输入日期的月份和日的天数。
5. 计算总天数除以7的余数,可以得到对应的星期几。根据星期几的值,可以使用一个条件语句来输出相应的结果。
以下是一个可能的Java代码实现示例:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入日期(格式:yyyyMMdd):");
String dateStr = scanner.nextLine();
int year = Integer.parseInt(dateStr.substring(0, 4));
int month = Integer.parseInt(dateStr.substring(4, 6));
int day = Integer.parseInt(dateStr.substring(6, 8));
int totalDays = calculateTotalDays(year, month, day);
int weekday = totalDays % 7;
String[] weekdays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
System.out.println(dateStr + "是" + weekdays[weekday]);
}
public static int calculateTotalDays(int year, int month, int day) {
int totalDays = 0;
// 计算1900年1月1日到输入日期的总天数
for (int i = 1900; i < year; i++) {
totalDays += isLeapYear(i) ? 366 : 365;
}
// 计算输入日期的月份和日的天数
for (int i = 1; i < month; i++) {
totalDays += getDaysInMonth(year, i);
}
totalDays += day;
return totalDays;
}
public static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
public static int getDaysInMonth(int year, int month) {
if (month == 2) {
return isLeapYear(year) ? 29 : 28;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else {
return 31;
}
}
}
```
这段代码可以接受用户输入一个8位数的日期,然后计算该日期对应的星期几,并输出结果。例如,输入20221014,输出20221014是星期六。
### 回答3:
Java编程实现计算给定日期是星期几的方法如下:
1. 首先,我们可以定义一个函数来判断给定年份是不是闰年。闰年的条件是能被4整除但不能被100整除,或者能被400整除。
```java
public static boolean isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return true;
} else {
return false;
}
}
```
2. 接下来,我们可以定义一个函数来计算给定日期是星期几。我们可以使用基姆拉尔森计算公式来进行计算。公式如下:
```java
public static int getDayOfWeek(int year, int month, int day) {
int h, q, m, j, k;
if (month < 3) {
month += 12;
year--;
}
h = (day + (26 * (month + 1)) / 10 + year + year / 4 + 6 * (year / 100) + year / 400) % 7;
return (h + 6) % 7;
}
```
3. 最后,在主函数中获取用户输入的日期,并调用定义的函数来计算星期几。
```java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个8位数的日期(格式例子:20221014):");
String dateStr = scanner.nextLine();
// 提取年、月、日
int year = Integer.parseInt(dateStr.substring(0, 4));
int month = Integer.parseInt(dateStr.substring(4, 6));
int day = Integer.parseInt(dateStr.substring(6, 8));
// 计算星期几
int dayOfWeek = getDayOfWeek(year, month, day);
// 显示结果
System.out.println("这一天是星期" + (dayOfWeek == 0 ? 7 : dayOfWeek));
}
```
以上就是用Java实现计算给定日期是星期几的方法。我们首先判断年份是否为闰年,然后使用基姆拉尔森公式进行计算。最后根据计算结果输出星期几的信息。
阅读全文