やさしいJava (SBクリエイティブ)
 プログラミング入門書の定番としてベストセラーとなっている『やさしい』シリーズ。その中でもJavaの入門書の決定版として定評のある『やさしいJava』に、最新情報を取り入れた待望の改訂版です。プログラミング経験ゼロからどうぞ。

・書籍中のサンプルコード(第7版)(ZIP圧縮)
正誤表
OpenJDKのダウンロード
「やさしいJava活用編」のページ
書籍情報
本書は2019年1月に「やさしいJava 第7版」として改訂されています。第7版では、Java最新版への対応などを行っております。
「やさしいJava活用編」のページ
第6版時の資料
第5版時の資料
第4版時の資料
第3版時の資料
第2版時の資料
第1版時の資料
正誤表
-----
2刷より訂正
-----
(お知らせいただきましてありがとうございます 2019.3)
・397ページ 本文下から2行目
(誤)speedや、処理が定義されているsetSpeed()メソッドのようなメンバをもたせることは
(正)speedのようなメンバをもたせることなどは
第6版の資料
ここより下記は第6版時の資料です。
サンプルコード(第6版)(zip圧縮)
正誤表(第6版)
第6版の正誤表
----------
4刷以降訂正済
----------
・388ページ 実行画面 最後の引き出し線
(誤)下から5〜4行目、下から1〜3行目をさす
(正)下から5〜3行目、下から1〜2行目をさす
Windows10 Creators Update
(2017.4〜)をご使用の場合
ivページ
「コマンドプロンプト」が「Windows PowerShell」になっています。
コマンドプロンプトのかわりに、Windows PowerShellをお使いいただくことができます。
コマンドプロンプトをお使いになる場合には、スタートメニューを右クリック→「ファイル名を指定して実行」を選択し、「cmd」を入力してください。
第5版の資料
ここより下記は第5版時の資料です。
サンプルコード(第5版)(zip圧縮)
正誤表(第5版)
第5版の正誤表
・461ページ 本文4行目
(誤)readLine()メソッドの戻り値をファイル1行分を
(正)readLine()メソッドの戻り値であるファイル1行分を
---------------
4刷より訂正済み
----------------
・152ページ 最初の青色コード部分5行目
(誤)(i + "回繰り返しました。");
(正)((i-1) + "回繰り返しました。");
---------------
2刷より訂正済み
----------------
・142ページ 表中 ^演算子 4行目
(誤)1 1 1
(正)1 1 0
第4版の資料
ここより下記は第4版時の資料です。
サンプルコード(第4版)(zip圧縮)
正誤表(第4版)
第4版の正誤表
・425ページ コード最下行
(誤)java.awt.image.*:
(正)java.awt.image.*;
----------
(4刷より修正済み)
----------
・431ページ Sample1の実行画面3行目
(誤)ArrayIndexOutOfBoundsException
(正)ArrayIndexOutOfBoundsException: 10
・440ページ Sample4の実行画面3行目
(誤)ArrayIndexOutOfBoundsExceptionという例外
(正)ArrayIndexOutOfBoundsException: 10という例外
・512ページ 問1
(誤)左上隅の座標が(20,20)となる位置に、「Hello」という文字を
(正)座標が(20,20)となる位置から、「Hello」という文字が
・512ページ 問4
(誤)「さようなら」と左上隅が(10,10)の位置に
(正)「さようなら」と座標が(10,10)の位置から
-----------------------------------
(2刷より修正済み)
-----------------------------------
・362ページ 下から5行目
(誤)final class Car()
(正)final class Car
・390ページ 1つ目のコード中5行目
(誤)// vc = new iVehicle();
(正)// ivc = new iVehicle();
・420ページ 下から5行目
(誤)import pc.Car
(正)import pc.Car;
・441ページ コラム中下から6行目
(誤)catch(ArrayBoundIndexOutofBoundsException ae){
(正)catch(ArrayIndexOutOfBoundsException ae){
・492ページ 最下行
(誤)with=200
(正)width=200
・545ページ 実行時のFAQ1行目
(誤)NoclassDefFoundError
(正)NoClassDefFoundError
第3版の資料
ここより下記は第3版時の資料です。
サンプルコード(第3版)(zip圧縮)
正誤表(第3版)
正誤表(第3版)
-----------------------------------
(10刷より修正済み)
-----------------------------------
・327ページ図中
(誤)Name str = newName("1号車");
(正)Name str = new Name("1号車");
-----------------------------------
(6刷より修正済み)
-----------------------------------
・32ページ表2-1 最下行
(誤)hは0〜7の数字
(正)hは0〜9の数字
-----------------------------------
(4刷より修正済み)
-----------------------------------
・447ページ下から2行目
(誤)1 try〜catchを使って受け止めなかった例外について、
(正)1 try〜catchを使って、
第2版の資料
ここより下記は第2版時の資料です。
サンプルコード(第2版)(zip圧縮)
正誤表(第2版)
正誤表(第2版)
-----------------------------------
(7刷より修正済み)
-----------------------------------
・527ページ11行目
(誤)また、Carクラスがpublicではありません。
(正)<削除>
・312ページ2行目
(誤)static double max(int a, int b)
(正)static int max(int a, int b)
・312ページ4行目
(誤)static double min(int a, int b)
(正)static int min(int a, int b)
・312ページ6行目
(誤)0.0〜1.0の乱数
(正)0.0〜1.0未満の乱数
・312ページ7行目
(誤)static int rint(double a)
(正)static double rint(double a)
-----------------------------------
(5刷より修正済み)
-----------------------------------
・161ページSample8.javaの1行目
(誤)import java.io.*;
(正)<削除>
・203ページ構文内
(誤)型 = 配列変数名[][];
(正)型 配列変数名[][];
・523ページ上から9行目
(誤)x = px;
(正)if(px >= 0 && px <=100) x = px; else x = 0;
・523ページ上から10行目
(誤)y = py;
(正)if(py >= 0 && py <=100) y = py; else y = 0;
・523ページ上から14行目
(誤)if(px >= 0 && x <=100)
(正)if(px >= 0 && px <=100)
・523ページ上から19行目
(誤)if(py >= 0 && y <=100)
(正)if(py >= 0 && py <=100)
・531ページ下から2行目
(誤)g.drawImage(img, 10, 10, this);
(正)g.drawImage(img, x, y, this);
-----------------------------------
(4刷より修正済み)
-----------------------------------
・495ページ下から2つ目のコード1行目
(追加)「import java.awt.Color;」
・495ページ下から1つ目のコード1行目
(追加)「import java.awt.Font;」
第1版の資料
ここより下記は第1版時の資料です。
・書籍中のサンプルコード(第1版)(LHA圧縮)
正誤表(第1版)
JDKダウンロード(Windows) ivページの補足
JDKのダウンロードページは英語表記になっていますので注意してください。 ダウンロード手順の概略は下のようになります。

1. Java 2 SDK StandardEdition 1.3のダウンロードページにアクセスします。(「やさしいJava」ivページの図)

2. ivページで拡大されている部分の「continue」ボタンを押します。

3. ソフトウェアに関するライセンス同意書が表示されます。「ACCEPT」を押すと同意したことになり、ダウンロードページに進むことができます。

4. 並んでいるボタンのいずれかを選んでダウンロードしてください(どれでも同じです)。たとえば一番上の「FTP」ボタンを押してください。

5. j2sdk1_3_0-win.exe(Java 2 SDK StandardEdition 1.3)をどこに保存するか指定するダイアログが表示されますので、ハードディスクなどいずれかの場所を指定してください。これでダウンロードが開始されます。ダウンロードが遅い場合は4.に戻って別のボタンを押すと、別の場所から同じファイルをダウンロードすることができます。

6. ダウンロードしたファイルをダブルクリックし、書籍vページ以下の手順にしたがってインストールしてください。


なお、以上の手順は変わる場合があります。(2000.11現在調べ)
AUTOEXEC.BATの開き方がわからない viページの補足
AUTOEXEC.BATは、お使いのハードディスクのすぐ下にあります。 メモ帳を起動して、メニューから「ファイル」→「開く」を選択し、 ダイアログの中の「ファイルの種類」を「すべてのファイル(*.*)」とするとファイル選択ダイアログ内に表示されますので開いてください。
「AUTOEXEC.BAT」書替え viページの補足
AUTOEXEC.BATの書替えは注意して行ってください。他のアプリケーションなどの情報が設定されていますので、PATH以外の行は書替えないように注意してください。AUTOEXEC.BATはあらかじめ別の名前で書替える前の状態を保存しておく(バックアップする)ことをおすすめします。書き間違うと、コンピュータを起動したときにWindowsや他のアプリケーションソフトが起動しなくなる場合があります。
コンピュータを起動したときに単純にWindowsが起動せず、DOSの画面で「c:\」と表示されているだけの場合であれば、

WIN

という1行かもしくは、

SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;
WIN

という2行を入力することで、Windowsを手動で起動することができます。 その後、再度AUTOEXEC.BATの記述が誤っていないかを確認してください。
「PATH」の設定をややくわしく viページの2補足
JDKをインストールしたフォルダの中から
javac.exe  (コンパイラ)
java.exe  (インタプリタ)
という名前の2つのファイルが入っているフォルダを探してみてください。 通常、「C:\JDK1.3」にJDKをインストールしたとすると、「C:\JDK1.3\BIN」のフォルダに2つとも入っています。

そのフォルダ名をAUTOEXEC.BATのPATHの行に追加してください。
「やさしいJava」のviページの2ではそのフォルダが「C:\JDK1.3\BIN」であると仮定してインストールする方法を説明しています。

たとえばお使いの環境で2つのファイルが「C:\MYJDK\BIN」というフォルダにあったら、

PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\MYJDK\BIN

のように太字部分を追加してください。
ディレクトリの移動方法が分からない 9ページの補足
MS-DOSではフォルダのことをディレクトリと呼びます。
「やさしいJava」9ページ5行目では、

ハードディスク(Cドライブ)の中の「Sample」フォルダ中の「01」フォルダ内

に移動しています。MS-DOSではフォルダの階層を\で区切って指定します。 お使いのフォルダ名に読み替えて、 ソースコードを保存したフォルダ(ディレクトリ)内に移動してください。
コンパイル・実行の手順例
本書6〜11ページで説明している コンパイル・実行までの手順例をまとめると、次のようになります。

@ハードディスク(Cドライブ)内に「Sample」フォルダを作成し、さらにその中に「01」フォルダを作成してください。
Aソースファイル(Sample1.java)を、「01」フォルダ内に保存してください。(→6ページ)
B「スタートメニュー」→「アクセサリ」から「MS-DOSプロンプト」を起動します。起動できたら、ディレクトリを移動します。「cd c:\Sample\01」と入力してください。(→9ページ)
Cコンパイルします。「javac Sample1.java」と入力してください。(→9ページ)
D実行します。「java Sample1」と入力してください。(→11ページ)

手順の例(イラスト)
ソースファイルを保存した後、もう一度ファイルを開く方法が分からない 9ページの補足
メモ帳を起動して、メニューから「ファイル」→「開く」を選択し、 ダイアログの中の「ファイルの種類」を「すべてのファイル(*.*)」とします。 ファイル選択ダイアログ内にファイルが表示されますので、目的のソースファイルを選んで開いてください。

あるいはメモ帳のショートカットを作成しておいて、そのアイコンにソースファイルをドラッグアンドドロップすると、より簡単にファイルを開けます。
Sample1.javaが読み込めませんと表示される 9ページの補足
javac ソースファイル名

と入力してコンパイルしようとしたのに、

「<ソースファイル名>が読み込めません」と表示される場合、 実際に作成したソースファイル名が間違っている場合があります。 特に、Windowsのメモ帳のバージョンによっては、 ファイル名の最後に、自動的に「.txt」がつけられて 「Sample1.java.txt」などという名前になってしまっている場合があります。

最後の「.txt」が表示されないようになっている場合があるので、 どこでも良いので1つフォルダを開いて、メニューの中から 「ツール」→「フォルダオプション」 →「表示」→「登録されているファイルの拡張子は表示しない」 の項目にチェックがついていたら、はずします。 そのあと、実際に作成したソースファイル名が 「Sample1.java.txt」などという名前になっていないか たしかめてみてください。
NoclassDefFoundError というエラーが出る 11ページの補足
java クラス名

と入力してプログラムを実行しようとしたのに

Exception in thread "main" java.lang.NoclassDefFoundError...

が出る場合、お手元の環境のアプリケーションなどが旧バージョンのJDK(1.1以前)を使っているなどのために、実行するクラスファイルの場所を探す環境変数であるCLASSPATHが設定されている可能性があります。
JDK1.1以前では実行するクラスファイルがあるディレクトリを指定するために、環境変数CLASSPATHを設定することが必要でしたが、Java2(1.2以降)では、実行したいクラスファイルが現在のディレクトリにある場合は、CLASSPATHの設定は必要ありません。

このような場合には、現在のディレクトリからもクラスファイルを探すようにする必要があります。環境変数CLASSPATHに「.」(ピリオド)を追加する必要があります。(「.」(ピリオド)が現在のディレクトリを表します。)
たとえばWindows95/98であれば、AUTOEXEC.BATの
SET CLASSPATH=...
という行に設定されていますので、現在のディレクトリからもクラスファイルを探すように、「.;」(ピリオド+セミコロンの区切り)を付け加えてください。つまり、次のようにします。

SET CLASSPATH=.;C:\jdk1.1.2\mine

(=のすぐあとの部分に追加しています。ここではC:\jdk1.1.2\mineなどといったすでに設定されているディレクトリの前に追加しています。)

もし、以上の作業でもうまくいかない場合は、アプリケーションの開発を始める前にDOS-プロンプトから次の1行を入力してから作業をはじめるようにしてください。

SET CLASSPATH=

P384のコンパイルがうまくいかない
p384ページの方法で2つのクラスファイルが作成されない場合は、 DOS-プロンプトから次の1行を入力してから作業をはじめるようにしてください。

SET CLASSPATH=

やさしいJava正誤表 
-----------------------------------
(初版4刷より修正済み)
-----------------------------------
p23 下から2行目
(誤)System.out.println("ようこそJavaへ!")
(正)System.out.println("ようこそJavaへ!");
p183 上から16行目
(誤)for(int i=0; i<test1.length; i++){
(正)for(int i=0; i<3; i++){
p183 上から20行目
(誤)for(int i=0; i<test2.length; i++){
(正)for(int i=0; i<3; i++){
p284 練習問題一番最後の行
(誤)public MyPoint(int x,int y)
(正)public MyPoint(int px,int py)
-----------------------------------
(初版6刷より修正済み)
-----------------------------------
p71 図4-2タイトル
(誤)num1=num+1
(正)num1=num1+1
p113 上から2行目
(誤)バリーエション
(正)バリエーション
p155 下から8行目(コード中)
(誤)boolean bl = 0;
(正)boolean bl = false;
-----------------------------------
(初版8刷より修正済み)
-----------------------------------
p473 本文1行目
(誤)java.applet.AppletパッケージのAppletクラス
(正)java.appletパッケージのAppletクラス
p478 下から2行目
(誤)g.setFont("Serif", Font.BOLD, 24);
(正)g.setFont(new Font("Serif", Font.BOLD, 24));
p478 下から1行目
(誤)g.drawString("Hello");
(正)g.drawString("Hello", 20, 20);
p491 問題文中1
(誤)右下隅の座標が(100,100)
(正)幅・高さが(100,100)
-----------------------------------
p131 下から2行目
(誤)opetrator
(正)operator
p155 下から7行目(コード中)
(誤)for(int i=0; i<5; i++)
(正)for(int i=0; i<5; i++){
p155 下から6行目(コード中)
(誤)for(int j=0; j<5; j++)
(正)for(int j=0; j<5; j++){
p194 上から2行目
(誤)ネストしたfor文で出力しています。
(正)for文で出力しています。
p475 下から3行目
(誤)appletviwer Sample1.html
(正)appletviewer Sample1.html
p503 下から3行目
(誤)if(x >= 0 && x <=100)
(正)if(px >= 0 && px <=100)
p504 上から3行目
(誤)if(y >= 0 && y <=100)
(正)if(py >= 0 && py <=100)
p289ページ表中
equals()引数の文字列かどうかを判断する
p299ページ表中
(誤)static double max(int a, int b)
(正)static int max(int a, int b)
p300ページ表中
(誤)static double min(int a, int b)
(正)static int min(int a, int b)
p300ページ表中
(誤)0.0〜1.0の乱数
(正)0.0〜1.0未満の乱数
p300ページ表中
(誤)static int rint(double a)
(正)static double rint(double a)
Books
Home