誤: int swapIndex = random.nextInt(size - 1);
正: int swapIndex = random.nextInt(size);

死にたい。

>>81
if (frg == false) {
card[nn] = num;
nn++;
} else frg = false;

ってしてみたら?
あとフラグの綴りはflagです。

buf = buf.substring(buf.length() - 4);

は何やってるのかわかりません。
if(frg == false)はif(!frg)でいいじゃん