FAQ (Frequently Asked Questions)

目次

以下の内容は随時更新していきます.

環境に関するFAQ

Mountain Lionを使っているので,Java 8がインストールできません.
Mavericks以上にアップデートし,Java 8をインストールしてください. 古いOSを使い続けるのは,以下の理由により推奨しません.そのため, 本演習科目においてもサポートしません.
  • サポートするだけのマンパワーがない.
  • メーカがサポートしないということは,脆弱性が見つかった場合の対応が取れない.
  • メーががサポートしないものを個人がサポートしきれない.
  • 授業で利用することを認めると,使用し続けることを助長する.
  • アップデートしない積極的・合理的な理由が思い当たらない(理由があれば,教えてください).
これでもアップデートしないのであれば, Virtual Boxをインストールし, そこに適当な Linux をインストールするなど,自分自身で解決してください. Vagrantを使うのも良いでしょう.
LecRecで後から講義内容を確認したいです.
録画に対応していない教室があるため,対応できません.しっかりと授業に出席し,内容を確認してください.
毎回の課題が合っているかを確認したいです.
Findプログラムより,毎回提出してもらうことにしました. そして,その回までにできているプログラムの内容をMoodleに示します. 復習に役立ててください.

プログラムに関するFAQ

C言語のprintfのようなフォーマット付きの出力は使えますか?
はい.System.out.printfを使ってください.使い方はほぼC言語と同じです. 詳細は,APIドキュメントjava.util.Formatterを参照してください.
ただし,改行は\nではなく,%nを使ってください. 一般に,改行コードはOSごとに異なっています.そのため,\n であれば,OSに依存してしまいます.Javaでは,環境非依存を目指しているため, その環境にあった改行コードを出力する必要があります. そのため,%nであれば,OSに相応しい改行コードに置換してくれます.
C言語のscanfのような入力フォーマッタはありますか?
いいえ.ありません.ただし,java.io.Consoleクラスの readLine(String, Object...)メソッドを使うと, 同じようなことを実現可能です. 使い方はAPIドキュメントjava.io.Consoleを参照してください.
ユーザからの入力を受け取るには,第4講で学ぶコマンドライン引数を活用することを推奨します.
int型やdouble型はないのですか?

ありますが,この講義では扱いません.その理由は後述しますが, 理由の理解はこの講義の範囲から外れますので,今はわからなくても問題ありません.

intdoubleプリミティブ型であり, 他の型との扱いが微妙に異なります.Java言語で中心となるべきは オブジェクト型ですので, そちらを中心に扱うようにしています.

なぜ新しいPathではなく古いFileを使うのでしょうか

確かに,古いFileよりも,新しく,機能も多いPath を学んだ方が一般的には良いです. しかし,Pathを使うには,Java 8 で導入された Stream API と呼ばれる仕組みの理解が必要となります. この Stream API はこの講義の範囲では扱うことが困難です. 関数型プログラムの知識も必要となる上に,Java の新しい文法に関する知識も要求されるためです. そのため,講義では,Fileを使ったプログラムを作成していきます.

とはいえ,単に使ってみる分には簡単に使えますので,興味があれば,各自で調べて使ってみましょう. Pathを使えるのであれば,Fileも使えるようになりますので, 勉強した内容は無駄にはなりません.

なぜSystem.exitを使ってはダメなのでしょうか.

System.exit(...)は呼び出した時点でJavaの実行環境を強制的に終了させます. 強制的に終了させるため,必要な後処理なども無視し,終了してしまいます.

また,Javaのプログラムは,単体で終了することを前提にしてはいけません. 他で使われる可能性を考えておかなければならないのです. そうでなければ,利用したツールが突然何の説明もなく終了してしまい, 原因追求に多くの時間を費やすことにつながります.

System.exit(...)を使わなくても, mainメソッドが最後まで実行されれば,必要な後処理が行われ,終了します. System.exit(...)に頼らずに終了する方法に慣れておきましょう.

バグパターンを見つけるためのツールである FindBugsにも バグパターンとして,「System.exit(...)の呼び出し」が含まれており, 避けるべきであると明記されています.