Java基本日历打印

Java基本日历打印,java,Java,我正在为我的计算机科学1课程做一项作业,我被困在某个部分。代码的编写是为了让用户输入年份,然后输入星期几(使用0到6)来启动日历。我要离开我的导师的骨架去寻找代码。我目前的问题是,我不能让代码在7天后打印新行。提前谢谢 import java.util.Scanner; public class Test { /** * Determines if an input is a leap year * * @param ye

我正在为我的计算机科学1课程做一项作业,我被困在某个部分。代码的编写是为了让用户输入年份,然后输入星期几(使用0到6)来启动日历。我要离开我的导师的骨架去寻找代码。我目前的问题是,我不能让代码在7天后打印新行。提前谢谢

import java.util.Scanner;
public class Test {

        /**
         * Determines if an input is a leap year
         * 
         * @param year year in question
         * @return true if a leap year
         */
    public static boolean isLeapYear(int year) {
        if((year % 4 == 0) || (year % 100 == 0)) return true;
        return false;
        }

        /**
         * Outputs a month to the console
         * 
         * @param month title
         * @param startDay 0=Sunday ... 6=Saturday
         * @param numDays number of days in the month
         * @return day of the week of the last day of the month
         */
        public static int printMonth(String month, int startDay, int numDays){
            System.out.println(month);
            int dayOfWeek = 10;

            for(int i = 0; i < startDay; i++){
                System.out.print("  ");
            }

            for(int i = 1; i < numDays; i++){
                System.out.printf("%2d ", i);
                if((i + startDay) % 7 == 0);{
                    System.out.print("");
                }
            }
            //Your code goes here
            System.out.println("Print: " + month);
            System.out.println("");

            return dayOfWeek;
        }

        /**
         * Program execution point:
         * input year, day of the week (0-6) of january 1
         * output calendar for that year
         * 
         * @param args command-line arguments (ignored)
         */
        public static void main(String[] args) {
            @SuppressWarnings("resource")
            final Scanner input = new Scanner(System.in);

            System.out.print("Enter the year: ");
            final int year = input.nextInt();

            System.out.print("Enter the day of the week of January 1st (0=Sunday, 1=Monday, ... 6=Saturday): ");
            final int firstDay = input.nextInt();

            if (year<=0) {
                System.out.println("The year must be positive!");
                System.exit(0);
            }

            if (firstDay<0 || firstDay>6) {
                System.out.println("The day of January 1st must be between 0 and 6!");
                System.exit(0);
            }

            final int numFebDays;
            if (isLeapYear(year)) {
                numFebDays = 29;
            } else {
                numFebDays = 28;
            }

            int lastDayOfWeek;
            lastDayOfWeek = printMonth("January", firstDay, 31);
            lastDayOfWeek = printMonth("February", lastDayOfWeek, numFebDays);
            lastDayOfWeek = printMonth("March", lastDayOfWeek, 31);
            lastDayOfWeek = printMonth("April", lastDayOfWeek, 30);
            lastDayOfWeek = printMonth("May", lastDayOfWeek, 31);
            lastDayOfWeek = printMonth("June", lastDayOfWeek, 30);
            lastDayOfWeek = printMonth("July", lastDayOfWeek, 31);
            lastDayOfWeek = printMonth("August", lastDayOfWeek, 31);
            lastDayOfWeek = printMonth("September", lastDayOfWeek, 30);
            lastDayOfWeek = printMonth("October", lastDayOfWeek, 31);
            lastDayOfWeek = printMonth("November", lastDayOfWeek, 30);
            lastDayOfWeek = printMonth("December", lastDayOfWeek, 31);

        }
}
import java.util.Scanner;
公开课考试{
/**
*确定输入是否为闰年
* 
*@param年问题
*@如果是闰年,返回true
*/
公共静态布尔值isLeapYear(整数年){
if((第%4年==0)| |(第%100年==0))返回true;
返回false;
}
/**
*输出一个月到控制台
* 
*@param-month-title
*@param startDay 0=星期日…6=星期六
*@param numDays月内的天数
*@每月最后一天的一周返回日
*/
公共静态int printmount(字符串月、int startDay、int numDays){
系统输出打印项次(月);
int dayOfWeek=10;
对于(int i=0;i如果(year此程序有几个问题。注释中提到了其中两个问题,将System.out.print(“”)更改为System.out.println(“”),并删除for语句末尾的

此外,您没有更改dayOfWeek的值。它总是返回10,这就是为什么它一直向右打印的原因。它应该是

int dayOfWeek = (startDay + numDays) % 7;
我还注意到计算闰年的公式有点不正确。一年是闰年,如果它可以被4整除,除非它也可以被100整除,除非它是闰年,如果它可以被400整除。下面是一个有效的函数:

public static boolean isLeapYear(int year) {
    return (year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)) ;
}

我看到的另一个错误是当月最后一天没有打印。通过更改for循环的这一部分,这一错误得以修复:
I
“我当前的问题是,我无法让代码在7天后打印新行。”
--你能帮我们翻译一下吗?你到底想做什么?到底发生了什么?请尽可能清楚。你当前的问题可能只是一个打字错误。7天后,你调用
System.out.print(“”)
。那应该是
System.out.println(“”
)。另外,你还有一个错误的分号:
如果((i+startDay)%7==0);{
。去掉分号,因为它打破了if块。投票关闭是一个印刷错误。好吧,所以我去掉了分号,这对lol很有帮助。但是现在,当我以后每个月打印时,它打印的第一个日期与格式化日历相差很远。。。