gpt4 book ai didi

java - 基本返回和类别问题

转载 作者:行者123 更新时间:2023-12-01 19:14:38 26 4
gpt4 key购买 nike

我是 Java 新手,在学习 C 之后尝试学习它,但在语法上遇到了一些问题。这是我的教授给我看的代码,我基本上可以理解它在做什么,接受最后一部分的 [public boolean isAfter(Date b)]。 Date b 从哪里来,compareTo 是什么?

import java.util.Calendar;
import java.util.GregorianCalendar;

public class Date implements Proj1Constants {

private static final int[] DAYS = { 0, 31, 29, 31, 30, 31, 30, 31, 31,
30, 31, 30, 31 };
private static final int LEAP_YEAR = 366;
private static final int NON_LEAP_YEAR = 365;

private final int month; // month (between 1 and 12)
private final int day; // day (between 1 and DAYS[month])
private final int year; // year



/**
* Constructor: default; returns today's date
*/
// creates today's date as the date; obtaines it from Java library

public Date()

{
GregorianCalendar c = new GregorianCalendar();
month = c.get(Calendar.MONTH)+1; //our month starts from 1
day = c.get(Calendar.DAY_OF_MONTH);
year = c.get(Calendar.YEAR);
}



/**
* Constructor: Does bounds-checking to ensure object represents a valid
* date
*
* @param m represents the month between 1 and 12
* @param d represents the date between 1 and the corresponding number
* from array DAYS
* @param y represents the year
* @exception RuntimeException
* if the date is invalid
*/
public Date(int m, int d, int y)

{
if (!isValid(m, d, y))
throw new RuntimeException("Invalid date");
month = m;
day = d;
year = y;
}


/**
* Constructor: Does bounds-checking to ensure string represents a valid
* date
*
* @param sDate represents a date given in format mm-dd-yyyy
* @exception RuntimeException if the date is invalid
*/

public Date(String sDate)

{
int m, d, y;
String[] chopDate = sDate.split("-");
m = Integer.parseInt(chopDate[ZEROI]);
d = Integer.parseInt(chopDate[ONEI]);
y = Integer.parseInt(chopDate[TWOI]);
if (!isValid(m, d, y))
throw new RuntimeException("Invalid date");
month = m;
day = d;
year = y;
}


/**
* constructor: creates a date with a given year; fills in valid month and day;
* as december 31st.
*
* @param y represents a date given in year as integer
*/


public Date(int y)

{

month = 12;
day = DAYS[12];
year = y;
}


/**
* create a date with a given month and year; fills in valid day;
*
* @param m represents the month between 1 and 12
* @param y represents the year
* @exception RuntimeException if the date is invalid
*/

public Date(int m, int y)

{

if (!isValid(m, DAYS[m], y))
throw new RuntimeException("Invalid date; correct input");
month = m;
day = DAYS[m];
year = y;
}


/**
* Is the given date valid?
*
* @param month, day, and year
* @return false if month exceeds 12 or is less than 1
* @return false if day exceeds the corresponding days for a month from
* array DAYS
* @return false if the year is not a leap year and has 29 days
*/

private static boolean isValid(int m, int d, int y)

{
if (m < 1 || m > 12)
return false;
if (d < 1 || d > DAYS[m])
return false;
if (m == 2 && d == 29 && !isLeapYear(y))
return false;
return true;
}


/**
* is y a leap year?
*
* @param y
* represents the year specified
* @return true if year divisible by 400
* @return false if year divisible by 100 and not by 400
*/

private static boolean isLeapYear(int y)

{
if (y % 400 == 0)
return true;
if (y % 100 == 0)
return false;
return (y % 4 == 0);
}


/**
* is (m, y) a leap month?
*
* @param m represents the month specified
* @param y represents the year specified
* @return true if it is a leap month
* @return false otherwise
*/

private static boolean isLeapMonth(int m, int y)
{
if (isLeapYear(y)) return ((m == 2) ? true : false);
return false;
}


// return the next Date
/**
* adds a day and returns a new Date object
*
* @return returns a new Date object adding a day
*/

public Date next()

{
if (isValid(month, day + 1, year))
return new Date(month, day + 1, year);
else if (isValid(month + 1, 1, year))
return new Date(month + 1, 1, year);
else
return new Date(1, 1, year + 1);
}


// is this Date after b?
/**
* compares two Date objects
*
* @param b Date object
* @return true if this Date is after Date b
*/

public boolean isAfter(Date b)

{
return compareTo(b) > 0;
}

最佳答案

isAfter 是一个实例方法,它接受参数 Date,其引用是函数范围内的 b

如果这是完整的代码,则它是无效的,因为 compareTo 方法没有在任何地方定义。

关于java - 基本返回和类别问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7274237/

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