Java New I/O -part3-
かのサイトにある第2回の実習問題1というのをやってみた。折角なのでなるべくBuffer操作メソッドを使ってみた。
import java.nio.*; import java.util.*; /** * 第2回目 実習課題1 * 次の仕様を満たすプログラムを作成してください。 * * - 要素数10000のint型配列を明示的に作成し、その配列を補助配列とするIntBufferを作成する。 * - バッファの先頭から順番に1〜10の乱数を書き込む。 * - 書き込んだ値の合計が10000を超えた時点で書き込みを終了する。 * - バッファへの書き込みが終了したあと、バッファに蓄積したデータすべてと要素数を標準出力に出力する。 */ public class Main1 { public static void main(String[] args) { // int配列を生成し、IntBufferでwarpする int[] arr = new int[10000]; IntBuffer buf = IntBuffer.wrap(arr); // バッファの先頭から順番に 1〜10の値をランダムに書き込む Random rand = new Random(); rand.setSeed((int) new Date().getTime()); int sum = 0; // バッファに書き込んだ値の合計値 while(sum <= 10000) { int n = rand.nextInt(10) + 1; buf.put(n); // 乱数をバッファに書き込む sum += n; // 合計値にも加算する } buf.flip(); // 現在位置までを限界値にして、最初に戻る // 出力 System.out.println("要素数:" + buf.limit()); // 限界値が要素数になっている while( buf.position() < buf.limit() ) System.out.print("" + buf.get() + ", "); // 要素を出力する System.out.println(); // 改行… } }