質問: これは、コンソールで書いた文字をファイルに書き込むというプログラムなんですけど、
回答: a=a+s...、でaを再起的に呼び出してますから、aは初期化しなければなりません。""は空文字で初期化しているだけです。String a;で変数定義をしただけでメモリ領域を確保したに過ぎません、その中身にさらにsと改行を足し代入するという指示は中身がないので不可能です。