FAQ (Frequently Asked Questions)
目次
以下の内容は随時更新していきます.
環境に関するFAQ
- Mountain Lionを使っているので,Java 8がインストールできません.
-
Mavericks以上にアップデートし,Java 8をインストールしてください.
古いOSを使い続けるのは,以下の理由により推奨しません.そのため,
本演習科目においてもサポートしません.
- サポートするだけのマンパワーがない.
- メーカがサポートしないということは,脆弱性が見つかった場合の対応が取れない.
- メーががサポートしないものを個人がサポートしきれない.
- 授業で利用することを認めると,使用し続けることを助長する.
- アップデートしない積極的・合理的な理由が思い当たらない(理由があれば,教えてください).
- 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
型はないのですか?-
ありますが,この講義では扱いません.その理由は後述しますが, 理由の理解はこの講義の範囲から外れますので,今はわからなくても問題ありません.
int
やdouble
は プリミティブ型であり, 他の型との扱いが微妙に異なります.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(...)
の呼び出し」が含まれており, 避けるべきであると明記されています.