###Javaオリジナル問題作成3の続きです。
#14章(Javaを支える標準クラス)
■問題1
JavaAPI(Dateクラス,Calendarクラス)を利用し、現在の年,月,日を表示してください。
(例)表示例:2020年2月15日
■問題2
sukkiパッケージ作成してください。(以下のすべてのクラスはここに格納)
Heroクラスを作成。name(String型),hp(int型)のフィールドを準備してください。
Mainクラスを作成し、Heroクラスのname、ageフィールドに値をセットしてください。(値はname(自分の名前),age(100))
Heroクラスのインスタンスを呼び出してください。
「型名@英数字」で表示されるので、
自分の名前と100が表示されるように修正してください。
ヒント(toStringをオーバライドする)
■問題3
ラッパークラスを用いて
文字列(変数:10)を数値に変換し表示してください。
また、数値(変数:20)を文字列に変換し表示してください。
解答
//問題1
package date;
import java.util.Calendar;
import java.util.Date;
public class Main2 {
public static void main(String[] args) {
Date now = new Date();
Calendar c = Calendar.getInstance();
c.setTime(now);
int y = c.get(Calendar.YEAR);
int m = c.get(Calendar.MONTH)+1;
int d = c.get(Calendar.DAY_OF_MONTH);
System.out.println(y + "年" + m + "月" + d + "日");
}
}
//実行結果
2021年4月22日
//問題2
package sukki;
public class Main {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Hero h = new Hero();
h.name = "ミナト";
h.hp = 100;
System.out.println(h.toString());
}
}
//実行結果
ミナト
100
package sukki;
public class Hero {
String name;
int hp;
public String toString() {
return this.name + this.hp;
}
}
//問題3
package rapper;
public class Main {
public static void main(String args[]) {
// 文字列を数値に変換
String s10 = "10";
Integer num = Integer.parseInt(s10);
System.out.println(num);
// 数値を文字に変換
int i=20;
String str = String.valueOf(i); //valueOfメソッドはLongクラスのメソッドの1つです。valueOfメソッドを用いることで、long型の変数か値、もしくは、String型の変数か値からLongクラスを生成することのできるメソッドです。
System.out.println(str);
}
}
//実行結果
10
20
#15章(例外)
■問題1
変数s(String型)を宣言し、nullを代入する。
s.length()の内容を表示してください。
エラーが発生するのでtry-catch文を用いて例外処理をしてください。
catchの内容:スタックトレースを表示してください。
■問題2
exceptionパッケージ作成してください。(以下のすべてのクラスはここに格納)
Exクラスを作成し、loopメソッド(throws宣言[例外クラス:ArrayIndexOutOfBoundsException])を追加してください。
loopメソッド内容:
・配列の要素3つ作成[10,20,30]
・for文で4つ要素を呼び出す
Main1クラスを作成し、loopメソッドを呼び出す。
catchの内容:「例外発生しました途中で終了します」と表示してください。
■問題3
Personクラスを作成し、setメソッドを追加してください。
setメソッド内容:
・引数あり(int型)
・引数が0より小さい場合、例外を投げる。(例外クラス:IllegalArgumentException)(メッセージ:正の数ではありません。)
Main3クラスを作成し、setメソッドを呼び出す。(引数:-2)
エラーが発生し、メッセージが表示されればOKです。
解答
//問題1
package exception;
public class Main {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
try {
String s = null;
System.out.println(s.length());
}catch(NullPointerException e) {
e.printStackTrace();
}
}
}
//実行結果
java.lang.NullPointerException
at sa/exception.Main.main(Main.java:10)
//問題2
package exception;
public class Main1 {
public static void main(String[] args) {
try {
Ex ex = new Ex();
ex.loop();
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("例外発生しました途中で終了します");
}
}
}
//実行結果
10
20
30
例外発生しました途中で終了します
package exception;
public class Ex {
public void loop() throws ArrayIndexOutOfBoundsException{
//ArrayIndexOutOfBoundsException・・不正なインデックスを使って配列がアクセスされたことを示すためにスローされま
//ほんとはここでエラーが起きてるかthrowsをつけることで、エラー出た場合はよろしく
int[] num = {10,20,30};
for(int i=0; i<4; i++) {
System.out.println(num[i]);
}
}
}
//問題3
package exception;
public class Main3 {
public static void main(String[] args) {
Person p = new Person();
p.set(-2);
}
}
//実行結果
Exception in thread "main" java.lang.IllegalArgumentException: 正の数ではありません。
at sa/exception.Person.set(Person.java:7)
at sa/exception.Main3.main(Main3.java:7)
package exception;
public final class Person {
public void set(int age) {
if (age < 0) {
throw new IllegalArgumentException("正の数ではありません。");
}
}
}
Javaオリジナル問題作成1(Java入門編:スッキリわかるJava
Javaオリジナル問題作成2(Java入門編:スッキリわかるJava
Javaオリジナル問題作成3(Java入門編:スッキリわかるJava
終了です。
お疲れ様でした。