java 实现在运行时 输入年月日 输出那一天是那一年的第几天

2025-05-17 05:46:29
推荐回答(3个)
回答1:

k[]没有初始化

int[] k = new int[3];

而且你这程序有明显逻辑错误

public class dijitian {
public static void main(String[] args) {
dijitian d = new dijitian();
d.shuru();
d.panduan();
}

int k[] = new int[3]; //初始化数组
int months1[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int months2[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Scanner scan = new Scanner(System.in);

public void shuru() {
    //去掉j[],完全无用
for (int i = 0; i < 3; i++) {
k[i] = scan.nextInt();
}
scan.close(); //输入流要关闭
}

public void panduan() {
int sum = 0;
for (int i = 0; i < k[1] - 1; i++) { //计算输入月份之前的整月天数之和
if (k[0] % 4 == 0 && k[0] % 100 != 0 || k[0] % 400 == 0) {
sum = sum + months2[i]; //闰年是month2,你写反了
} else {
sum = sum + months1[i];
}
}
sum += k[2]; //加当前月的天数
System.out.println(sum);
}
}

回答2:

空指针异常

回答3:

这是什么问题。