みなさん、こんにちは。興味深い問題があります。オブジェクト指向プログラミングの 2 学期目です。Java 入門コースの最初のプロジェクトでは、その年の 1 月 1 日からの経過日数を計算する Date クラスを作成します。明らかにうるう年をチェックし、間違った入力を検証する必要があります。現在、ユーザーが入力する要素が少なすぎるか多すぎるか (1 つの文字列内) を確認しようとしています。これは私が持っているものですが、ロジックのどこかに欠陥があります。入力する要素が少なすぎると、エラーが表示され、再度読み取られます。入力が多すぎると、エラーが表示され、再度読み取られます。次に、3 つの要素を入力すると、以前に表示されたエラーが表示されます。1 つのエラーの後、3 つの要素のみが入力されたことを受け入れません。助けてください。
/* Accepts a string as an argument and splits it into 3 sections
* month,day, and year
*/
void setDateFields(String dateString){
String [] a = {null}; // Array created to hold dateString
a = dateString.split(" "); // Split dateString into three sections
// each ending with a white space
// While to check if user entered month day and year
while (a.length != 3){
if(a.length < 3)
System.out.println("Insufficient number of elements\n" +
"Enter a new date in the format of MM DD YYYY");
else if(a.length > 3)
System.out.println("Too many elements entered\n" +
"Enter a new date in the format of MM DD YYYY");
readDate();
a = dateString.split(" ");
}
monthText = a[0]; // The monthText is assigned the first index of the array
dayText = a[1]; // The dayText is assigned the second index of the array
yearText = a[2]; // The yearText is assigned the third index of the array4
numericMonth = Integer.valueOf(monthText);
numericDay = Integer.valueOf(dayText);
numericYear = Integer.valueOf(yearText);
}