例外処理
Java練習問題 第19回では「例外処理」についての問題を用意してあります。
「例外処理」の解説はこちら
問題 1 難易度 ★★★
下記のコードは入寮くされた整数の二乗を計算するプログラムです。try~catch 文を用いて以下の実行例となるようなプログラムに変更してください。
public class Main_1501 {
public static void main(String[] args) {
while (true) {
System.out.println("整数を入力してください。");
String s = new java.util.Scanner(System.in).nextLine();
int n = Integer.parseInt(s);
System.out.println(n + "の二乗は、" + (n * n) + " です。");
}
}
}
実行例
整数を入力してください。
a
不正な入力です。もう一度、整数を入力してください。
2.5
不正な入力です。もう一度、整数を入力してください。
6
6 の二乗は、36 です。
問題 1 解答
正解は、、、
public class Main_1501 {
public static void main(String[] args) {
while (true) {
System.out.println("整数を入力してください。");
try {
String s = new java.util.Scanner(System.in).nextLine();
int n = Integer.parseInt(s);
System.out.println(n + "の二乗は、" + (n * n) + " です。");
break;
} catch (NumberFormatException e) {
System.out.print("不正な入力です。もう一度、");
}
}
}
}
問題 2 難易度 ★★★
以下の手順に従ってプログラムを作成してください。
① Student クラスを以下のように定義して下さい。
Student クラスのフィールドに、int 型の number と、String 型の name を定義し、セッターとして、 setNumber, setName を用意してください。
setName では、引数が 2 文字以上かつ 16 文字以下であることを検査し、正しくない引数の場合は、
IllegalArgumentException を送出するようにしてください。
正しい引数の場合は、”名前を設定しました”と出力してください。
② main メソッド内で Student インスタンスを生成し、ユーザーが入力した文字列を name としてセットしてください。
実行例(1文字入力の場合)
生徒の氏名を入力してください。
あ
Exception in thread “main” java.lang.IllegalArgumentException: 名前の長さは 2~16 文字です。
at lesson017_exception.Student.setName(Student.java:22)
at lesson017_exception.Main_1702.main(Main_1702.java:19)
実行例(4文字入力の場合)
生徒の氏名を入力してください。
山田太郎
名前を設定しました:山田太郎
問題 2 解答
正解は、、、
public class Main_1502 {
public static void main(String[] args) {
Student student = new Student();
System.out.println("生徒の氏名を入力してください。");
String name = new java.util.Scanner(System.in).nextLine();
student.setName(name);
}
}
class Student {
private int number;
private String name;
public int getNo() {
return number;
}
public void setNo(int hp) {
this.number = hp;
}
public String getName() {
return name;
}
public void setName(String name) {
if (name.length() < 2 || name.length() > 16) {
throw new IllegalArgumentException("名前の長さは 2~16 文字です。");
}
this.name = name;
System.out.println("名前を設定しました:" + this.name);
}
}
Java練習問題 第20回では「ArrayList」から出題します。
コメント