私はあなたが一行で日付を入力しなければならないJavaプログラミングの割り当てを持っています、そしてそれはあなたに日付に基づいた数秘術(星占いのような)レポートを与えます。ユーザーは、スペースで区切ってフォーマットされた日付を入力することを前提としています。
in.nextInt()を使用して、入力の月、日、および年を取得できます。ただし、ユーザーが日付の各部分に正しい区切り文字を使用していることも確認する必要があります。つまり、ユーザーがスラッシュを使用しているかどうかを確認する必要があります。
以下のコードを見ると、現在、charAt()を使用して区切り文字を検索しています。問題は、日付が常に14文字になるとは限らないことです。したがって、2004年10月17日の形式の日付は14文字の長さですが、1992年4月7日の日付は12文字の長さしかないため、「slash1」は常にin.charAt(3)に含まれるとは限りません。後者の状況では、in.charAt(2)になります。
javaにはin.nextChar()のようなものを許可するメソッドがありますか?そうではないことは知っていますが、どうすれば日付の次の文字を見つけることができますか?
編集:私はこれを元々反映するのを忘れていましたが、私の教授は、何らかの理由でString.split()メソッドを使用することは許可されていないと言いました。問題は、月、日、年が完全にうまくいくということです。その人が日付を区切るためにスラッシュを使用したことを確認する必要があります。ダッシュを入力すると、日付は無効になります。
public void getDate()
{
char slash1, slash2;
do
{
System.out.print("Please enter your birth date (mm / dd / yyyy): ");
Scanner in = new Scanner(System.in);
String date = in.nextLine();
month = in.nextInt();
day = in.nextInt();
year = in.nextInt();
slash1 = date.charAt(3);
slash2 = date.charAt(8);
} while (validDate(slash1, slash2) == false);
calcNum();
}