すべて chapter16.kadai パッケージ内に作成してください

ソースコード(クラス名.java)をSドライブにアップロードして提出してください

S:\Java\課題提出\基礎\16章


問題1

以下のクラスは、実行時のユーザーの入力内容により、例外が起こる可能性があります。

整数ではなく、文字や小数が入力された時
java.util.InputMismatchException
2つ目の数字に0が入力された時
java.lang.ArithmeticException

package chapter16.kadai;

import java.util.Scanner;

class DivCalc {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("1つ目の数字: ");
        int a = sc.nextInt();
        System.out.print("2つ目の数字: ");
        int b = sc.nextInt();
        System.out.println
            (a + "÷" + b + " = " + (a/b) + " あまり " + (a%b));
    }
}
            

InputMismatchExceptionが発生したときは「整数を入力してください」
ArithmeticExceptionが発生したときは「2つ目の数字に0は指定できません」
とコンソールに表示するようにプログラムを変更してください。

また、例外が発生してもしなくても、最後に「処理が終了しました」とコンソールに表示してください。

問題2

以下は入力された日付を元に、曜日を表示するクラスですが、適切な例外処理が行われていないため、このままではコンパイルが通りません。


package chapter16.kadai;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

class DateCalc {
    public static void main(String[] args) {
        String[] youbi = {"日", "月", "火", "水", "木", "金", "土"};
        SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd");
        Scanner sc = new Scanner(System.in);

        System.out.println("日付をyyyy/MM/dd形式で入力してください");
        String dateStr = sc.nextLine();
        Date date = df.parse(dateStr);

        Calendar cal = Calendar.getInstance();
        cal.setTime(date);

        int youbiNum = cal.get(Calendar.DAY_OF_WEEK);
        System.out.println
            (dateStr + "は" + youbi[youbiNum - 1] + "曜日です");
    }
}
            

適切な例外処理により、例外が発生した場合は「入力した日付の書式が不正です」とコンソールに表示してから処理を中断しましょう。

スタックトレースは表示させないようにしてください。

問題3

問題2 の DateCalcクラスをコピーし、DateCalc2クラスを作成します。

例外が発生したとき、処理を中断するのではなく、適切な書式で日付が入力されるまで入力処理を繰り返すように、改良しましょう。

実行結果例(緑字はコンソールからの入力値)

日付をyyyy/MM/dd形式で入力してください

20220520

入力した日付の書式が不正です

日付をyyyy/MM/dd形式で入力してください

2022-05-20

入力した日付の書式が不正です

日付をyyyy/MM/dd形式で入力してください

2022/05/20

2022/05/20は金曜日です