gpt4 book ai didi

Java 日历无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:18 26 4
gpt4 key购买 nike

我的任务是根据用户输入的第一天制作一个日历。如果年份例如。 2 = 星期二和年份,这样我就可以知道它是否是闰年。我设法让一切正常工作,除了以下情况:

当我输入 2013 2(意味着 1 月 1 日应该是星期二)时,它会将 1 月 1 日放在星期六。您可以通过访问计算机上的日历并进行比较来检查日期是否正确显示。我已经查看了代码,但无法弄清楚开始时输入的 2 是如何得出从周六开始的日期的。

我哪里出错了?

package javaapplication6;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class JavaApplication6 {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.println("Enter the year and the day as a number eg. 2034 2: ");
int year = input.nextInt();
int day = input.nextInt();
day -= 1;
boolean leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
for(int i = 1; i <= 12; i++){
String wDay = "";
String wMonth = "";
int days = 0;
int current = 0;
switch(i){
case 1: days = 31; day+= 31; wMonth = "January"; break;
case 2: if(leap){days = 29;}else{days = 28;}; if(leap){day += 29;}else{day += 28;}; wMonth = "February"; break;
case 3: days = 31; day+= 31; wMonth = "March"; break;
case 4: days = 30; day+= 30; wMonth = "April"; break;
case 5: days = 31; day+= 31; wMonth = "May"; break;
case 6: days = 30; day+= 30; wMonth = "June"; break;
case 7: days = 31; day+= 31; wMonth = "July"; break;
case 8: days = 31; day+= 31; wMonth = "August"; break;
case 9: days = 30; day+= 30; wMonth = "September"; break;
case 10: days = 31; day+= 31; wMonth = "October"; break;
case 11: days = 30; day+= 30; wMonth = "November"; break;
case 12: days = 31; wMonth = "December"; break;
}
System.out.printf(" %15s\n", wMonth);
System.out.println(" ___________________________");
System.out.printf(" %3s %3s %3s %3s %3s %3s %3s\n", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun");
for(int space = 0; space <= (day % 7) + 1; space++){
System.out.print(" ");
current ++;
}

for(int date = 1; date <= days; date++){
if(current > 7){
System.out.print("\n ");
current = 1;
}
if(date < 10){
System.out.print(date + " ");
}else{
System.out.print(date + " ");
}
current++;
}
System.out.println("\n");
}
}
}

最佳答案

你确定有效吗?我在 2014 年和 3 月运行了它,从周日开始。我做了一些更改,现在我认为它应该可以正常工作:

    switch(i){
case 1: days = 31; day+= 0; wMonth = "January"; break;
case 2: if(leap){days = 29;}else{days = 28;}; day += 31; wMonth = "February"; break;
case 3: days = 31; if(leap){day += 29;}else{day += 28;}; wMonth = "March"; break;
case 4: days = 30; day+= 31; wMonth = "April"; break;
case 5: days = 31; day+= 30; wMonth = "May"; break;
case 6: days = 30; day+= 31; wMonth = "June"; break;
case 7: days = 31; day+= 30; wMonth = "July"; break;
case 8: days = 31; day+= 31; wMonth = "August"; break;
case 9: days = 30; day+= 31; wMonth = "September"; break;
case 10: days = 31; day+= 30; wMonth = "October"; break;
case 11: days = 30; day+= 31; wMonth = "November"; break;
case 12: days = 31; day+= 30; wMonth = "December"; break;
}

 for(int space = 0; space <= (day % 7); space++){ //here u added one space too much.

在 switch 语句中,您添加天数的速度太快了。在第一个月,您已经有 day=31,但您应该有输入的天数 - 1。

关于Java 日历无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25353481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com