Javaオリジナル問題作成4（Java入門編：スッキリわかるJava）

###Javaオリジナル問題作成3の続きです。

#14章（Javaを支える標準クラス）
■問題１
JavaAPI（Dateクラス,Calendarクラス)を利用し、現在の年,月,日を表示してください。
（例）表示例：2020年2月15日

■問題２
sukkiパッケージ作成してください。（以下のすべてのクラスはここに格納）
Heroクラスを作成。name(String型),hp(int型)のフィールドを準備してください。
Mainクラスを作成し、Heroクラスのname、ageフィールドに値をセットしてください。（値はname(自分の名前),age(100)）
Heroクラスのインスタンスを呼び出してください。
「型名@英数字」で表示されるので、
自分の名前と100が表示されるように修正してください。

ヒント（toStringをオーバライドする）

■問題３
ラッパークラスを用いて
文字列（変数：10）を数値に変換し表示してください。
また、数値（変数：20）を文字列に変換し表示してください。

解答

```java:Main2.java
//問題１
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日

```
<br>

```java:Main.java
//問題２
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
```
```java:Hero.java
package sukki;

public class Hero {
        String name;
        int hp;

        public String toString() {
                return this.name + this.hp;
        }
}
```
<br>

```java:Main.java
//問題３
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

```
<br>


#15章（例外）
■問題１
変数s（String型）を宣言し、nullを代入する。
s.length()の内容を表示してください。

エラーが発生するのでtry-catch文を用いて例外処理をしてください。
catchの内容：スタックトレースを表示してください。

■問題２
exceptionパッケージ作成してください。（以下のすべてのクラスはここに格納）
Exクラスを作成し、loopメソッド(throws宣言[例外クラス：ArrayIndexOutOfBoundsException])を追加してください。
loopメソッド内容：
・配列の要素3つ作成[10,20,30]
・for文で4つ要素を呼び出す
Main1クラスを作成し、loopメソッドを呼び出す。
catchの内容：「例外発生しました途中で終了します」と表示してください。

■問題３
Personクラスを作成し、setメソッドを追加してください。
setメソッド内容：
・引数あり(int型)
・引数が0より小さい場合、例外を投げる。（例外クラス：IllegalArgumentException）（メッセージ：正の数ではありません。）
Main3クラスを作成し、setメソッドを呼び出す。（引数:-2）
エラーが発生し、メッセージが表示されればOKです。


解答

```java:Main.java
//問題１
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)

```
<br>

```java:Main1.java
//問題２
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
例外発生しました途中で終了します

```

```java:Ex.java
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]);
		}
	}
}

```
<br>

```java:Main3.java
//問題３
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)

```
```java:Person.java
package exception;

public final class Person {

	public void set(int age) {
		if (age < 0) {
			throw new IllegalArgumentException("正の数ではありません。");
		}
	}
}
```
<br>

[Javaオリジナル問題作成1（Java入門編：スッキリわかるJava](https://qiita.com/freelanceradiation/items/2e24cd4f00de7796d807)

[Javaオリジナル問題作成2（Java入門編：スッキリわかるJava](https://qiita.com/freelanceradiation/items/60fe227910532bb9db79)

[Javaオリジナル問題作成3（Java入門編：スッキリわかるJava](https://qiita.com/freelanceradiation/items/1df4fdca6fc12fa8eeb6)

終了です。

お疲れ様でした。