// ####この課題はCでは現在課されていないが,参考となる情報もあるので示します.#### import java.text.*; import java.util.*; public class Exer12 { // 予め例外(エラーに似たようなもの)が起きる可能性に対処しないといけない場合,対処法の一つが,メソッドの後ろ側に throws 例外 を書くこと. // たとえば,Threadクラスのsleepメソッドを呼出す(Thread.sleep(...))場合は,InterruptedExceptionの例外を扱う必要がある. // もう一つの対処法が,後半に記述するtry-catch文を書くこと. @SuppressWarnings("null") public static void main(String[] args) throws InterruptedException { System.out.println("3秒お休みします"); Thread.sleep(3000); // 3秒(3000ミリ秒)の間,プログラムの実行をお休み System.out.println( "現在時間:" + System.currentTimeMillis()); // 現在日時をUNIX時間のミリ秒で取得.UNIX時間では,1970/1/1 0:00 // a.m.を0秒とする. // 日付として扱いやすいような形で現在日時を取得 Calendarを使う. // import java.util.*;で使えるようになる // 日付表記にするためにSimpleDateFormatとDateFormatを使う.import java.text.*;で両方使えるようになる. Calendar calendar = Calendar.getInstance(); // 現在日時のカレンダーを取得 DateFormat format = SimpleDateFormat.getInstance(); // 日付のフォーマッタを得る System.out.println( format.format(calendar.getTime())); // formatメソッドで引数に日付(calendar.getTime())を与える // よくある関数(数学)を使うにはMathクラスを使う System.out.println("√2 = " + Math.sqrt(2)); // 2の平方根 System.out.println("2^10 = " + Math.pow(2, 10)); // 2の10乗 // 文字列操作は基本的にString型やその値(正確には,値のことをインスタンスと呼ぶ)を活用する. // 文字列("aebec")に対して,splitメソッドを呼ぶと引数(e)で文字列を区切った文字列の配列が得られる. // Arrays.toStringは配列の内容を人にわかりやすい文字列に変換してくれるメソッド.import java.util.*;があれば使える. System.out.println(Arrays.toString("aebec".split("e"))); // 変数に対してもsplitできる. String str = "goto"; System.out.println(Arrays.toString(str.split("o"))); // substringで部分文字列を得られる. System.out.println("sub-string".substring(0, 3)); // String型から呼出せるメソッドもあれば,インスタンスからしか呼出せないメソッドがあったりする. // String型から呼出せるjoinメソッドは,配列の内容を区切り文字を挟んで連結して一つの文字列にする. // この例は,gotoを[g,t]にして,その後,eで配列要素を連結してgetを得ている. System.out.println(String.join("e", str.split("o"))); // 例外処理はちゃんと説明しないと理解が難しいかもしれないが・・・一応 try { // tryは例外を扱うブロック,例外が生じる可能性がある処理はこのブロックを書いて,この中で記述する. String str2 = null; // nullは"インスタンスを何も参照していない"ことを表す値. str2.length(); // lengthはインスタンスを参照していないと例外が起きるメソッドなので,この場合に実行すると例外が起きる // 40行目で生じる例外は,nullを持つ変数から何かを呼出そうとしたときに生じるNullPointerExceptionという例外. } catch ( NullPointerException e) { // catch節は,引数(みたいなもの)に例外(例外の型 変数名)を書いて,ブロック内にその例外に対する処理を書く. System.out.println("あーあ,例外が生じちゃった."); System.out.println("理由は " + e.getMessage() + " だそうです."); } finally { // finally節は,例外が起きても起きなくても必ず実行する処理 System.out.println("例外が起きても,起きなくてもここは実行するよ!"); } } }