ある指示に基づいてプログラム (クラス) をコーディングするように依頼されました。私はほとんどそれを落としたように感じますが、何かばかげたことをしています。INSERT_HYPHEN と入力すると、アクセサー メソッドに「-」が挿入されるように、シンボリック定数にハイフンを追加する方法がわかりません。互換性のない型と表示されています>:( また、ローカル変数 "fullDate" を 'getFullDate' アクセサー メソッドに挿入しようとして、"fullDate = 年 + 月 + 日" を入力すると、「互換性のない型です! おそらくそれは、 accesor メソッドは文字列で、その中に 'ints' を追加しようとしています。これを回避する方法が見つかりません。これが私のコードです。
public class Date
{
public static final int INSERT_ZERO = 0;
public static final char INSET_HYPHEN = -; //ERROR incompatible types
// instance variables - replace the example below with your own
private int year;
private int month;
private int day;
/**
* Default constructor
*/
public Date()
{
setYear (2013);
setMonth (01);
setDay (01);
}
/**
*
*/
public Date (int whatIsYear, int whatIsMonth, int whatIsDay)
{
setYear (whatIsYear);
setMonth (whatIsMonth);
setDay (whatIsDay);
}
/**
*@return year
*/
public int getYear()
{
return year;
}
/**
*@return month
*/
public int getMonth()
{
return month;
}
/**
*@return day
*/
public int getDay()
{
return day;
}
/**
*@return
*/
public String getFullDate()
{
String fullDate;
if (whatIsMonth < 10); // the year, month, and day all give me incompatible types :(
{
fullDate = year + INSERT_HYPHEN + INSERT_ZERO + month + INSERT_HYPHEN + day;
}
if (whatIsDay < 10);
{
fullDate = year + INSERT_HYPHEN + month + INSERT_HYPHEN + INSERT_ZERO + day;
}
else
{
fullDate = year + INSERT_HYPHEN + month + INSERT_HYPHEN + day;
}
return year + month + day;
}
/**
*
*/
public void setYear (int whatIsYear)
{
if ((whatIsYear >= 1990) && (whatIsYear <= 2013))
{
year = whatIsYear;
}
else
{
year = 2013;
}
}
/**
*
*/
public void setMonth (int whatIsMonth)
{
if ((whatIsMonth >= 1) && (whatIsMonth <= 12))
{
month = whatIsMonth;
}
else
{
month = 01;
}
}
/**
*
*/
public void setDay (int whatIsDay)
{
if ((whatIsDay >= 1) && (whatIsDay <= 31))
{
day = whatIsDay;
}
else
{
day = 01;
}
}
}
もう少し背景があります。私が構築しているこのクラスには、年、月、日を保持する 3 つのフィールドがあります。年は 1900 年から現在の年までの範囲で指定できます。月は 1 から 12 の間で指定できます。日は 1 から 31 までの範囲で指定できます。コードでは「マジック」ナンバーの代わりに記号定数を使用する必要があります。たとえば、 public static final int FIRST_MONTH = 1; です。
デフォルトのコンストラクターは、年を現在の年に、月を最初の月に、日を最初の日に設定します。デフォルト以外のコンストラクターは、各パラメーターをテストします。年パラメーターが許容範囲外の場合、フィールドは現在の年に設定されます。月パラメーターが許容範囲外の場合、フィールドは最初の月に設定されます。day パラメーターが許容範囲外の場合、フィールドは最初の日に設定されます。
各フィールドには、アクセサ メソッドとミューテータ メソッドがあります。3 つのミューテーター メソッドはすべて、パラメーターの有効性をチェックし、有効でない場合は、デフォルト以外のコンストラクターと同じ方法で対応するフィールドを設定します。
これは私が問題を抱えている部分です。「public String getFullDate()」というメソッドを含める必要があります。このメソッドは、YYYY-MM-DD のような形式の日付を含む文字列を返します。例: 2012-01-01。1 桁の月と日は、先行ゼロで埋められます。 "
単なるアイデアであっても、どんな助けでも大歓迎です:)ありがとう。