java入門 java 7版 - scc-kk.co.jp ·...

46

Upload: others

Post on 22-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

(本体 2,000 円+税)

好評発売中 !

Javaバイブルシリーズオブジェクト指向プログラミングJava7版

●B5変 421頁●定価(本体2,000円+税)

2012年3月発売 !

JavaバイブルシリーズWebアプリケーション構築Java7版

●B5変 約350頁●定価(本体2,800円+税)

好評発売中 !

HTML演習HTML5対応版

著者:中島省吾●B5変 305頁●定価(本体2,000円+税)

Page 2: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

● OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国に

おける登録商標です。

● Windowsは米国Microsoft Corporationの米国およびその他の国における登録商標です。

● その他記載された会社名およびロゴ、製品名などは該当する各社の商標または登録商標です。

● 本書では™および®の記載は省略しました。

Java_INTRO+TOC_v5_130121-2 13.2.8 17:10 ページ ii

Page 3: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

はじめに

本書は、プログラミング経験のない読者がプログラミング言語としての「Java(ジャバ)」を初歩から学ぶ

ためのテキストです。

近年「Java」は、もっとも注目を集めている言語といっていいでしょう。スタンドアロンやネットワークク

ライアント環境をはじめ、サーバサイド、あるいはモバイル環境にいたるまでのアプリケーションの開発に

利用されるようになりました。本書は、これら開発のすべてに共通して必要な、プログラムの制御構造と

アルゴリズムを学びながらJava言語の文法を習得する流れになっています。また、豊富なプログラミン

グ演習をとおして、よいプログラムを作る上で必要なテストやデバッグの知識も身に付けることができるで

しょう。

本書の構成は、各章を順番に学習することでアルゴリズムとJava言語の基本的な文法を無理なく理

解できる流れになっています。また、本シリーズの続編に進むことで「オブジェクト指向プログラミング」か

ら「Webアプリケーション構築」までを理解できる構成になっています。

本シリーズで学ぶことで、プログラマやシステムエンジニアを目指すきっかけとなれば幸いです。

2013年 瀬戸雅彦

i

Java_INTRO+TOC_v5_130121-2 2/8/13 5:10 PM ページ i

Page 4: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

標準学習時間

サポート情報/サンプルプログラム

本書に記載された項目に関する最新情報や、サンプルプログラムなどを、必要に応じて公開しています。

http://www.scc-kk.co.jp/scc-books/support/B-362/support.html

標準学習時間

内容 範囲 学習時間(1時限=90分)

1. Javaの概要 1ページ~ 10ページ 1.0 時限

(付録A1 プログラム作成の準備)

2. Javaプログラミングをはじめよう 11ページ~ 36ページ 2.0 時限

3. データの記憶 37ページ~ 67ページ 2.0 時限

4. 繰り返し型のプログラム 69ページ~ 109ページ 4.0 時限

5. 分岐型のプログラム 111ページ~ 147ページ 3.0 時限

6. 配列 149ページ~ 191ページ 4.0 時限

7. その他の制御文 193ページ~ 214ページ 1.5 時限

8. メソッドの概要 215ページ~ 240ページ 1.5 時限

9. ストリーム入出力 241ページ~ 270ページ 3.0 時限

10. ファイル入出力 271ページ~ 299ページ 3.0 時限

11. プログラミング総合演習 301ページ~ 341ページ 5.0 時限

合計 30.0 時限

学習時間はあくまでも目安です。理解度に合わせて、さらに時間をかけて学習しても構いません。また、

これは、プログラミング経験のない読者がはじめてプログラミング言語としての「Java」を学ぶことを想定

したものです。ほかの言語を学習した経験のある人は、もう少し早く学習を進めることができるかもしれま

せん。

ii

Java_INTRO+TOC_v5_130121-2 2/8/13 5:10 PM ページ ii

Page 5: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

ナビゲーションマップ

プログラムのソースコード

本書ではソースコードがどこにあるかが一目でわかるように、ソースコードに背景色を付けています。また、

ソースコードで使用する文字で紛らわしいものに関しては以下のように区別しやすい形にしてあります。

表記 意味

1 数字の1(イチ)

l 英小文字のl(エル)

I 英大文字のI(アイ)

0 数字の0(ゼロ)

o 英小文字のo(オー)

O 英大文字のO(オー)

ナビゲーションマップ(1)

本書の構成は、各章を順番に学習することでアルゴリズムとJava言語の基本的な文法を無理なく理解

できる流れになっています。ですから、基本的には以下に示す「標準モード」で学習してください。しかし、

前提知識や学習目標が異なる場合は別のモードで学習することも可能です。

■標準モード

前提知識―プログラミング経験なし

学習目標―プログラムの制御構造とアルゴリズムを学びながらJava言語の文法を習得する

このテキストの学習のあとは、オブジェクト指向プログラミングの習得を目指してください。

1章

2章

付録1

以降の章を 順に学習

なし

あり

JDK

iii

Java_INTRO+TOC_v5_130121-2 2/8/13 5:10 PM ページ iii

Page 6: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

ナビゲーションマップ

ナビゲーションマップ(2)

■プログラミング体験モード

前提知識―プログラミング経験なし

学習目標―Javaの概要を理解するとともに、Javaプログラミングの作業をとおして、プログラミング

の基本を習得する

標準学習時間の半分程度でプログラミングの基本的な内容を体験します。

この学習でプログラミングに興味を持った人は、そのほかの章の学習にもチャレンジしてください。

1章

2章

付録1

3章

4.8と4.9は除く

なし

あり

4章

5章

6章

8章

JDK

iv

Java_INTRO+TOC_v5_130121-2 2/8/13 5:11 PM ページ iv

Page 7: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

ナビゲーションマップ

ナビゲーションマップ(3)

■プログラミング経験者モード(倍速モード)

前提知識―ほかの言語でプログラミング(学習)の経験あり

学習目標―アルゴリズムをJavaで具現化できることを目標に、Javaプログラミングの特徴に注意しな

がら基本的な文法を習得する

前半部分は、確認および演習問題中心に学習してください。後半は、クラスライブラリの利用などに

注意してプログラミング演習を中心にじっくり学習を進めます。

このテキストの学習のあとは、本格的なオブジェクト指向プログラミングの習得を目指してください。

1章

2章

付録1

3章3.3はしっかり理解しましょう

なし

あり

倍速モード

じっくりモード 4章

8章

9章

10章

11章

5章

6章

7章

JDK

v

Java_INTRO+TOC_v5_130121-2 2/8/13 5:11 PM ページ v

Page 8: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

目次

目次

第1章 Javaの概要 ................................................................................................ 1

1.1 Javaの特徴と歴史 ................................................................................................... 2

1.2 Java開発環境 ......................................................................................................... 5

1.3 Javaを使ったプログラム開発の流れ .......................................................................... 7

1.4 プログラミング演習 ................................................................................................. 10

第2章 Javaプログラミングをはじめよう ................................................................ 11

2.1 よいプログラムを作るために ..................................................................................... 12

2.2 計算するプログラム ................................................................................................. 17

2.3 簡単なプログラムの作成 .......................................................................................... 20

2.4 デバッグ .................................................................................................................. 25

2.5 プログラミング演習 ................................................................................................. 30

第3章 データの記憶 ............................................................................................. 37

3.1 データの記憶 .......................................................................................................... 38

3.2 変化する値 ............................................................................................................. 42

3.3 データ型の違い ....................................................................................................... 46

3.4 入力データの記憶 ................................................................................................... 59

3.5 プログラミング演習 ................................................................................................. 61

第4章 繰り返し型のプログラム ............................................................................. 69

4.1 こうする? sum = 1 + 2 + ・・・ 10; ......................................................................... 70

4.2 while文 ................................................................................................................. 71

4.3 比較演算子 ............................................................................................................ 75

4.4 10回繰り返すプログラム ......................................................................................... 77

4.5 複合代入演算子とインクリメント演算子 .................................................................... 79

4.6 入力の繰り返し ....................................................................................................... 83

4.7 for文 ..................................................................................................................... 87

4.8 ループ型プログラムを作成するときの注意点 .............................................................. 93

4.9 for文のネスト ....................................................................................................... 100

4.10 プログラミング演習 ............................................................................................... 104

vi

Java_INTRO+TOC_v5_130121-2 2/8/13 5:11 PM ページ vi

Page 9: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

目次

第5章 分岐型のプログラム ................................................................................. 111

5.1 18歳未満は半額 ................................................................................................... 112

5.2 if文 ...................................................................................................................... 113

5.3 if else文 .............................................................................................................. 118

5.4 else if句 .............................................................................................................. 122

5.5 文字列の比較 ....................................................................................................... 125

5.6 複合条件での分岐 ................................................................................................ 130

5.7 プログラミング演習 ............................................................................................... 139

第6章 配列 ........................................................................................................ 149

6.1 連続するデータ ...................................................................................................... 150

6.2 配列の宣言とメモリ領域の確保 .............................................................................. 152

6.3 配列の初期化 ....................................................................................................... 155

6.4 配列の要素数 ....................................................................................................... 157

6.5 要素への値設定 .................................................................................................... 161

6.6 配列を利用したプログラム技法 ............................................................................... 166

6.7 配列変数の代入 ................................................................................................... 179

6.8 多次元配列 ........................................................................................................... 182

6.9 プログラミング演習 ................................................................................................ 188

第7章 その他の制御文 ...................................................................................... 193

7.1 繰り返し文 ............................................................................................................ 194

7.2 処理フローの制御 .................................................................................................. 197

7.3 多方向分岐 ........................................................................................................... 206

7.4 プログラミング演習 ................................................................................................ 213

第8章 メソッドの概念 ......................................................................................... 215

8.1 メソッドの種類 ...................................................................................................... 216

8.2 メソッドの宣言と呼び出し ...................................................................................... 219

8.3 引数と戻り値 ........................................................................................................ 223

8.4 メソッドの例 .......................................................................................................... 232

8.5 プログラミング演習 ............................................................................................... 237

vii

Java_INTRO+TOC_v5_130121-2 2/8/13 5:11 PM ページ vii

Page 10: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

目次

第9章 ストリーム入出力 ..................................................................................... 241

9.1 画面出力と書式指定 ............................................................................................. 242

9.2 キーボード入力 ...................................................................................................... 250

9.3 例外処理 .............................................................................................................. 256

9.4 プログラミング演習 ............................................................................................... 267

第10章 ファイル入出力 ........................................................................................ 271

10.1 ファイルの構造と入出力手順 ................................................................................. 272

10.2 テキストファイルの出力 .......................................................................................... 275

10.3 テキストファイルの入力 .......................................................................................... 281

10.4 ファイルに関する情報の取得と操作 ....................................................................... 287

10.5 プログラミング演習 ............................................................................................... 292

第11章 プログラミング総合演習 ........................................................................... 301

11.1 擬似言語仕様 ....................................................................................................... 302

11.2 プログラミング総合演習 ........................................................................................ 304

付録 ................................................................................................................ 343

A1 プログラム作成の準備 ............................................................................................ 344

A2 Javaの予約語 ...................................................................................................... 354

A3 演算子の優先順位 ................................................................................................ 355

A4 よく使うクラス ......................................................................................................... 357

索引 ................................................................................................................ 363

viii

Java_INTRO+TOC_v5_130121-2 2/8/13 5:11 PM ページ viii

Page 11: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

《第1章の目標》

・ Javaの特徴と歴史について理解する

・ JDKを使ったJava開発環境を理解する

・ Javaの実行環境を理解する

・ Javaを使ったプログラム開発の流れを理解する

第1章

Javaの概要

この章では、Javaの特徴や歴史的背景を説明します。また、Javaを使った開発

環境とプログラム開発の流れとJavaの実行環境の説明もします。まずは、肩の

力を抜いて楽な気分でJavaの学習をはじめましょう。

Java_Chap01v6_130121 13.2.8 17:23 ページ 1

Page 12: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第1章 Javaの概要

(1)Javaの特徴

Javaは、プラットフォーム(動作の基盤になるオペレーティングシステム(OS: Operating System)の種類

や環境、設定)に依存しない性質とネットワーク環境に対応した機能が多いことから、このインターネット

時代に広く受け入れられています。その特徴は、「Write Once, Run Anywhere(一度コードを書けば、

どのような環境でも動作する)」というキャッチコピーで強く主張されています。

Javaのコンパイラは、実行するプラットフォームに対応した形式(ネイティブコード)に変換するのではなく、

その手前の中間言語まで変換を行います。中間言語は、バイトコードと呼ばれる形式で保存され、さまざ

まなOSで解釈されます。

Javaは、はじめからオブジェクト指向というものを意識して作られています。言語仕様も簡潔さを追求し、

かつクラスライブラリには実行時に使える部品が豊富に用意されています。これで、簡潔さと機能の豊富

さという相いれない要求をバランスよくまとめた優れた言語になっています。

• オブジェクト指向

• プラットフォームに依存しない性質

• 豊富なネットワーク関連の機能

• 充実した標準クラスライブラリ

Javaには、プロセスを並行動作させるマルチスレッドや使われなくなったメモリ領域を自動的に整理する

働きのガベージコレクション機能、プログラムの暴走を未然に防御するしくみの例外処理機能などいくつ

もの特徴があります。Javaの学習を進めながら、少しずつその特徴を理解してください。

(2)Javaの歴史

Javaの歴史は、1991年アメリカのSun Microsystems社(サンマイクロシステムズ社)の"the Green

Project"(グリーンプロジェクト)までさかのぼることができます。当初は、"Oak"と名付けられた家電用の

組み込みアプリケーション用の言語としてスタートしました。その後、1994年の秋にJava言語の仕様が

完成し、翌年5月に発表されました。最初のリリースではWebブラウザのHotJavaとJDK(Java

Development Kit: Java開発キット)のαバージョンのペアで提供されました。ちょうどそのころインター

ネットの普及のきざしが見えはじめた時期と重なり、Javaは急速に広まりました。こうして、アプレット

(Applet:ブラウザ上で動くプログラム)が脚光を浴びることになったのです。

そして1998年末には1.2がリリースされ、これを機会にJDKという名称を改めJava 2 SDK(Software

Development Kit)という名称になりました。そして、2004年に公開された1.5で再びJDK(Java SE

Development Kit)と呼ばれるようになりました。

2

1 コンピュータの世界ではさまざまな言語が用途に応じて開発されてきました。現在使用されている言語のほとんどは、1970年代に生まれたか、その中から派生して発展してきたものです。しかし、これから学ぶJavaは、オブジェクト指向の考えを取り入れた比較的新しい言語です。ここでは、その特徴と歴史を紹介します。

Javaの特徴と歴史1.1

Java_Chap01v6_130121 2/8/13 5:23 PM ページ 2

Page 13: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

1.1 Javaの特徴と歴史

Java 2 SDKでは、拡張モジュールとして提供されていたさまざまな技術が開発対象ごとにまとめられ、

JDKに代わる開発基盤としてJ2SE(Java 2 Platform, Standard Edition)が登場しました。そのほか

に大規模なネットワークシステム向けにJ2EE(Java 2 Platform, Enterprise Edition)、携帯電話や

PDAなどの小型家電向けにJ2ME(Java 2 Platform, Micro Edition)が登場しました。この2つは開

発基盤であるJ2SEの機能を拡張するパッケージとして提供されています。その後、J2SEについては

2000年に1.3、2002年には1.4が正式にリリースされました。

このようにJavaの標準開発環境であるJDKは1.0、1.1を経て1.2にバージョンアップしたところでJava

2になったわけですが、この名称変更は開発環境に限定することなく、Java全体を網羅するプラットフォー

ムとしての位置付けを明確にしたものだといえます。アプレット人気は下火になったものの、これを機に

Javaの利用分野はさらに広がりました。そして、2004年に公開された1.5では、言語使用などに大きな

変更が加えられ、製品バージョンが5.0と称されるようになりました。そして、開発環境は、JDK 5.0と呼

ぶようになりました。

さらに2006年12月に公開された製品から命名方針が変更され、Java SE(Java Platform,

Standard Edition )6と呼ぶようになりました。2011年7月には、Java SE 7が公開され、2013年

にはJava SE 8が公開される予定です。

なお、Sun Microsystems社は、2010年にOracle Corporation(オラクル社)に吸収合併されました。

こうしてJavaは、スタンドアロンやネットワーククライアント環境をはじめ、サーバサイドあるいはモバイル

環境にいたるまでのアプリケーションの開発に利用されるようになりました。そして、現在のネットワーク

社会にとって、なくてはならない重要な存在になったといっていいでしょう。

Javaの沿革

1991 Sun Microsystems社の"the Green Project" Oak言語を開発

1994 Javaに改名 Java(Oak)ベースのブラウザ"WebRunner"を開発

1995 Java発表 "WebRunner"は"HotJava"ブラウザと改称されて公開

1996 JDK 1.0を公開

1997 JDK 1.1を公開

1998 J2SE 1.2を公開

2002 J2SE 1.4.0を公開

2004 J2SE 5.0を公開

2006 Java SE 6を公開

2011 Java SE 7を公開

2013 Java SE 8を公開予定

インターネットの普及

Javaアプレットが脚光を浴びる

動的なWebコンテンツの中心がCGIやFlashに移っていく

Javaがeコマースサイトのアプリケーションサーバなどサーバサイドプログラミングの中心的な存在になる

3

1

Java_Chap01v6_130121 2/8/13 5:23 PM ページ 3

Page 14: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第1章 Javaの概要

■確認問題1.1

次の文に該当する字句を答えなさい。

① Javaを開発した会社名 ( )

②アプリケーションソフトを動作させる環境と設定 ( )

③ Javaコンパイラによって生成されるもの ( )

④使われなくなったメモリ領域を自動的に整理する働き ( )

⑤プログラムの暴走を未然に防御するしくみ ( )

4

1

Columnオブジェクトとは

「オブジェクト」とは、コンピュータシステムにおける比較的新しい形のソフトウェア部品で

す。部品というからには多くのコンピュータシステムにおいて再利用が容易であり、さらに

厳密にいうならば機能追加、変更、削除などの改修が容易に行えることが必要です。

オブジェクトは「クラス」というオブジェク

トの設計図に基づいて作成されます。したが

って、クラスを適切に定義できるかどうかが

重要なポイントといえます。

オブジェクトは、データ定義とデータ処理

が一体となっていて、ソフトウェア部品とし

ての完成度がより高くなったところに、その

特徴があります。オブジェクト指向では、構

造体や変数などのデータ定義を「属性」とい

い、データ処理機能を実現するプログラミングロジックを「メソッド(操作)」と呼んでいます。

オブジェクトはソフトウェア部品の「カプセル化(encapsulation)」を強力に進めていく中核

機能となります。

Javaを学ぶからには、オブジェクトに触れなければならないでしょう。しかし、オブジェ

クトやそのほかの用語については、まだ理解できなくても大丈夫です。Javaの学習を進めて

いくうちにゆっくりと、そして少しずつ理解を深めていきましょう。このテキストの続編を学

ぶころ、それが見えはじめてくるでしょう。

Java_Chap01v6_130121 2/8/13 5:23 PM ページ 4

Page 15: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

1.2 Java開発環境

(1)JDK

JDK(Java Development Kit : Java開発キット)は、Javaの開発、実行環境を提供するJavaプラッ

トフォームです。JDKには、Javaのコンパイラやデバッガ、クラスライブラリ、JRE(Java Runtime

Environment : Java実行環境)などが含まれます。JDKの実装方法については、[付録A1 プログラ

ム作成の準備]を参照してください。

JRE(Java Runtime Environment)とは、Java言語で開発されたソフトウェアを実行するために必要なソフトウェア群の総称で、Javaプログラムの実行環境を提供します。

(2)Javaプラットフォーム

提供される開発環境は、大まかに3種類あります。そして、それぞれの規模や種類に合わせた

機能を備えています。

• Java SE(Java Platform, Standard Edition)

• Java EE(Java Platform, Enterprise Edition)

• Java ME(Java Platform, Micro Edition)

Java SEは、デスクトップを中心としたアプリケーション開発のためのプラットフォームです。本テ

キストでは、このJava SEをプラットフォームとして学習を進めます。

Java EEは、エンタープライズ・アプリケーション開発のためのプラットフォームで、セキュア(安全)

で信頼性が高く、さらにWebサービスもサポートしています。これは、サーブレット(Servlet : Web

サーバアプリケーション開発)やJSP(Java Server Pages : 動的Webページ生成)などのWebア

プリケーション開発で使用されます。

Java MEは、家電製品や携帯情報端末(PDA)、携帯電話、スマートフォンなどの組み込み機器向

けの機能をまとめたJavaプラットフォームです。

5

1ここでは、Oracle社が提供するJavaの開発、実行環境について説明します。

Java開発環境1.2

Java_Chap01v6_130121 2/8/13 5:23 PM ページ 5

Page 16: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第1章 Javaの概要

(3)Java実行環境

Java仮想マシン(Java Virtual Machine: Java VMまたはJVM)は、バイトコードをそのプラットフォーム

のネイティブコードに変換して実行するソフトウェアです。Javaで開発されたソフトウェアは、配布時にはプ

ラットフォームから独立した独自の形式(Javaバイトコード)になっており、そのままでは実行することができま

せん。このため、そのプラットフォーム固有の形式(ネイティブコード)に変換するソフトウェアを用意して変換

しながら実行します。この変換と実行を行うのがJava VMです。

初期のJava VMは、インタプリタ方式でバイトコードを解釈して実行していましたが、その実行速度

の遅さに問題を抱えていました。その後、Java VMには、HotSpot(ホットスポット)という高速化技

術が導入されました。HotSpotには、インタプリタと動的コンパイラを組み合わせて動作させるしくみ

や適応性のある最適化(adaptive optimization)を行う技術などが含まれます。

中間言語のコンパイル方式としてよく知られているJIT(Just In Time)コンパイラは、動的コンパイラ

のひとつといえます。実行時にバイトコードをネイティブコードにコンパイルして実行速度の向上を図

りますが、起動に時間がかかることや多くのメモリを必要とする欠点もあります。これらを欠点を補う

ためにHotSpotでは、適応型コンパイル(adaptive compile)という技術を用いて、その改善を図っ

ています。

図1.1 Javaの開発・実行環境

●確認問題1.2

次の文に該当する字句を答えなさい。

① Javaの開発ツール群の名称 ( )

②バイトコードを変換して実行するソフトウェア ( )

③実行するプラットフォームに対応したコード形式 ( )

ソースファイル

Java Compiler(コンパイラ)

クラスファイル

Java VM(Java仮想マシン)

OS(オペレーティングシステム)

ハードウェア

コンピュータで動作

Java VMでネイティブコードに変換

コンパイラでバイトコードに変換

プログラマがソースコードを作成

6

1

Java_Chap01v6_130121 2/8/13 5:23 PM ページ 6

Page 17: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

1.3 Javaを使ったプログラム開発の流れ

(1)プログラム開発の流れ

分析と設計のあとのJavaを使ったプログラム開発の流れは、図で示す3つのステップで構成されます。

図1.2 Javaのプログラム開発の流れ

(2)ソースファイルの作成

システムを分析・設計した仕様書をもとにソースコードを作成(コーディング)します。そして、メモ帳などのエ

ディタを使ってプログラムをコンピュータに保存します。これをソースファイルといいます。

それでは、定番ともいえる例題の「画面にHello!と表示するプログラム」でJavaのプログラム開発の流

れを説明します。

例題プログラム1-1(Hello.java)

public class Hello {

public static void main(String[] args) {

System.out.println("Hello!");

}

}

実行時エラー

コンパイルエラー

ソースファイルの作成・修正

javac によるコンパイル

バイトコードの実行

7

1Javaで作ることができるプログラムには、さまざまなものがあります。たとえば、クライアントで動作するアプリケーション、Webブラウザ上で動作するアプレット、サーバ側で動作するサーブレット、配布可能な部品であるJavaBeansなどです。また、スマートフォンやタブレットなどの携帯機器で動作するアプリも作ることができます。どのシステムも、その分析と設計を行いプログラミングに進みます。ここでは、そのすべてに共通する部分を抜き出してJavaプログラミングの一般的な流れを具体的に紹介することにします。

Javaを使ったプログラム開発の流れ1.3

Java_Chap01v6_130121 2/8/13 5:23 PM ページ 7

Page 18: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第1章 Javaの概要

Javaでは、保存するソースファイル名とクラス名を同じにしなければならないことと、英大文字小文字を

区別することに注意が必要です。また、ソースファイルの拡張子を.javaにする必要があります。つまり、

このソースファイルはHello.javaとして保存します。

(3)javacによるコンパイル

ソースファイルに記述したプログラム(ソースコード)をバイトコードに変換するためにコンパイルします。コン

ピュータはソースコードをそのまま解釈して実行できません。コンパイルはソースコードをコンピュータが理解

できるコードに翻訳することです。ただし、コンパイルするためには、Javaの開発環境をセットアップしてお

く必要があります。[付録A1 プログラム作成の準備]を参考にJavaの開発環境を用意してください。

コンパイルには、javacコマンドを使います。javacコマンドはコマンドプロンプトで実行します。

図1.3 Windowsのコマンドプロンプト

ソースファイルをコンパイルする場合は、プロンプトから javacコマンドとソースファイル名を入力して

[Enter]キーを押してください。コマンドとファイル名の間にはスペースを入力します。例題プログラム1-1

(Hello.java)をコンパイルするには、次のようにプロンプトから「javac Hello.java」と入力して[Enter]キ

ーを押します。

【コンパイルの実行例】

このあと、何も表示されずに入力プロンプトが表示されればコンパイルが成功したことになります。コンパ

イルに失敗した場合は、コンパイルエラーが表示されます。エラーメッセージには行番号やその理由が表

示されます。これらを参考にソースファイルを修正して再度コンパイルします。エラーの対処方法について

は、[第2章 Javaプログラミングをはじめよう]で詳しく説明します。

コンパイルに成功すると、拡張子が.classのHello.classというバイトコードのファイルが生成されます。

これをクラスファイルと呼びます。

>javac Hello.java

>

8

1

カーソルが点滅する

Java_Chap01v6_130121 13.2.8 17:23 ページ 8

Page 19: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

1.3 Javaを使ったプログラム開発の流れ

(4)バイトコードの実行

クラスファイルとは、コンピュータ固有の環境とは完全に独立したJava仮想マシン(Java VM)上の実行

ファイルです。javaコマンドは、まずJava VMを起動します。起動したJava VMは、javaコマンドに指

定されたクラスファイルを読み込み、その実行を開始します。

javaコマンドを使って実行するには、プロンプトからクラス名を入力して[Enter]キーを押してください。例

題プログラム1-1(Hello.java)を実行するには、次のように、プロンプトから「java Hello」と入力します。

【バイトコードの実行例】

バイトコードを表す拡張子(.class)を付けないで実行することに注意してください。このプログラムを実行

した結果は、以下のように「Hello!」という文字列が表示されます。

【実行結果】

まちがったクラス名を指定した場合や大文字と小文字をまちがうと実行できませんので注意してください。

(5)デバッグ

例題プログラム1-1のように短いプログラムであれば、すぐに正しく実行できるかもしれません。しかし、

実際のプログラミングでは、一度に正しいプログラムを完成させることはできないでしょう。プログラムには

必ずといっていいほど誤りが含まれます。この誤りのことをバグ(bug)、またはエラー(error)といいます。

そして、このバグを見つけて修正することをデバッグ(debug)といいます。bugは元 「々虫」という意味で

す。そして、debugには「害虫を駆除する」という意味もあるようです。

プログラミングにおけるデバッグは、プログラムの誤りを取り除くことです。プログラムのテストやデバッグ

を行うためのツールにデバッガ(debugger)があります。しかし、デバッガがバグの修正までを行ってくれ

るわけではありません。プログラマがその内容を十分に理解して対処しなければなりません。実際のプロ

グラミングでは、テストとデバッグがもっとも時間のかかる作業になるといってもいいでしょう。

>java HelloHello!

>

>java Hello

9

1

プログラムの実行結果

Java_Chap01v6_130121 13.2.8 17:23 ページ 9

Page 20: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第1章 Javaの概要

●確認問題1.3

次の説明文に該当する字句を答えなさい。

① Javaソースファイルの拡張子 ( )

②ソースコードをコンパイルするためのコマンド ( )

③バイトコードを実行するためのコマンド ( )

④プログラムの誤りを取り除く作業 ( )

⑤ Javaのプログラム開発の流れを示した図を完成させなさい

■演習問題1.1

Javaの開発環境を用意して、次の「Hello Java world!」と表示するプログラム(HelloJava.java)を実際

に動作させなさい。

public class HelloJava {

public static void main(String[] args) {

System.out.println("Hello Java world!");

}

}

実行時エラー

(       )

ソースファイルの作成・修正

(         )

(         )

10

1

さあ、実際にプログラミング演習をはじめましょう。みなさんのコンピュータにJavaの開発環境がまだ整っていない場合には、[付録A1 プログラムの作成準備]を参考にして、開発に必要なソフトウェアをインストールしてください。

プログラミング演習1.4

Java_Chap01v6_130121 2/8/13 5:23 PM ページ 10

Page 21: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章

Javaプログラミングをはじめよう

この章では、Javaプログラミングの基本を学習します。第1章の学習でプログラ

ムが完成するまでの流れは理解できました。しかし、実際にプログラムを作成して

コンピュータで動作させるまでには、いろいろと苦労することもあります。この章で

それを経験して、一人前のプログラマになる第一歩を踏み出しましょう。

《第2章の目標》

・ よいプログラムを作る考え方を理解する

・ Javaで簡単なプログラミングを作成できるようになる

・ 四則演算を利用した簡単なプログラムを作成できるようになる

・ 数式の優先順位を理解する

・ デバッグができるようになる

Java_chap02v12_130121 13.2.8 17:24 ページ 11

Page 22: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章 Javaプログラミングをはじめよう

(1)コメントの付け方

よいプログラムを作成するためには、コメント(注釈)を付けることが重要になります。コメントはプログラム

のコード(命令)には直接関係ありません。しかし、プログラムの説明やコードの意味をコメントにすること

は、あとでそのプログラムを読むときの手助けになります。

コメントは2種類に分類することができます。コードを読む手助けのための「実装コメント」と、APIドキュメ

ント(マニュアル)をjavadocコマンドによって自動生成するための「ドキュメント用コメント」です。

実装コメント

実装コメントにはブロックコメント、1行コメント、後置コメントがあります。

① ブロックコメント

ブロックコメントは、/* と */ でコメントを囲み、複数行にわたるコメントを記述するときに使用します。

一般にファイル、メソッド、データ構造、アルゴリズムを記述するときに使用します。

ブロックコメントの例

/*

* ブロックコメントをここに記述する

*/

② 1行コメント

1行コメントには、/* */ または // を使います。一般に直後の処理を説明するためのコメントに使用します。

直後の記述とインデントを合わせて記述するのが一般的です。

1行コメントの例

/* 1行コメントを記述する */

String message = "Comments";

12

2

プログラムの開発は、何人かで手分けをして行うのが一般的です。また、長い期間にわたる作業でもあります。そしてプログラムには変更や修正が付き物です。時間が経ってからのプログラムの変更や修正はとても手間のかかる作業です。変更や修正を少しでも楽なものにするためにはよいプログラムを作成しておくのが一番です。よいプログラムの条件はいくつかあります。ここで少しずつ学んでいきましょう。

よいプログラムを作るために2.1

Java_chap02v12_130121 2/8/13 5:24 PM ページ 12

Page 23: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

2.1よいプログラムを作るために

③ 後置コメント

後置コメントは、対象コード(1行)の行末に // を使って短いコメントを記述します。後置コメントは、// 以

降の行末までがコメントとして扱われますので、複数行にまたがるコメントを記述することができません。

後置コメントの例

if (xxx) {

method(yyy); // 後置コメントを記述する

} else {

return false; // 後置コメントを記述する

}

④ ロジックのコメントアウト

ロジックのコメントアウトは、一時的に使用しなくなったコードやデバッグ用のロジックをコメント扱いにする

場合などに使います。コメントアウトは、行の先頭の // で行うのが一般的です。

ロジックのコメントアウトの例

// for (i = 0; i < n; i++) {

// System.out.println("ロジックのコメントアウト");

// }

ドキュメント用コメント

ドキュメント用コメントは、javadocコマンドでAPIドキュメントを生成する際に処理されるもので、/** */

を使います。ドキュメントの形式を統一するためにも、この記述方法はコーディング規約などでルール決め

されているのが一般的です。

ドキュメント用コメントの例

/**

* ドキュメント用のコメントを記述する

*/

これから提示するプログラムには実装コメントを記述します。コメントを参考にプログラムを読むことに慣れ

てください。

13

2

Java_chap02v12_130121 2/8/13 5:24 PM ページ 13

Page 24: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章 Javaプログラミングをはじめよう

(2)プログラミングするときの注意

例題プログラム1-1(Hello.java)を使って、コードの意味とプログラミングするときの注意点について、少

し詳しく説明します。

Javaのプログラムは基本的にクラスと呼ばれるコードブロックの共同作業によって実行されます。また、

そのクラスの中にもメソッドという小さなコードブロックが存在しています。コードブロックは { ではじま

り、 } で終わります。クラスはある機能に対する形式を定義するために使われます。メソッドはそのクラ

ス内の振る舞い(処理機能または操作)を表します。

例題プログラム1-1(Hello.java)【再出】

プログラムは、字下げ(インデント)してコードブロックの範囲をわかりやすくするように記述します。コンパ

イラ自体はインデントを意識しませんが、プログラムの可読性をよくするためにもコードブロック単位のイン

デントを必ず行うようコーディングしてください。インデントは、ブロックごとにスペース(本テキストでは4つ

のスペースを入れています)やタブを入力する方法が一般的です。読みやすさも、よいプログラムの条件

になります。

インデントしないプログラムの例

public class Hello {

public static void main(String[] args) {

System.out.println("Hello!");

}

}

インデントしたプログラムの例

public class Hello {

public static void main(String[] args) {

System.out.println("Hello!");

}

}

public class Hello {

public static void main(String[] args) {

System.out.println("Hello!");

}

}クラス

メソッド

main()メソッドのコードブロック

14

2

インデント(コードブロックごとに4つずつのスペースで字下げ)

Java_chap02v12_130121 13.2.8 17:24 ページ 14

Page 25: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

2.1よいプログラムを作るために

プログラムの各コードの内容について、もう少し詳しく説明します。

1行目

public class Hello {

これ以降のブロック内がHelloクラスであると宣言しています。public classは、それぞれJavaで特別

の意味を持つキーワード(予約語)です。Helloは、これから作成するプログラムに付けた名前です。これ

をクラス名といいます。クラス名は、英大文字ではじめるのが一般的です。

publicは、アクセスレベルを示し、クラスHelloがどこからでも利用可能なことを表します。classは、

class以下の{ }で囲まれたコードブロックがひとつのクラスであることを表します。

Javaでは、保存するソースファイル名とクラス名を同じにしなければならないことと、英大文字小文字を

区別することに注意が必要です。また、ソースファイルの拡張子を.javaにする必要があります。つまり、

このソースファイルはHello.javaと保存します。

2行目

public static void main(String[] args) {

main( )メソッドを宣言しています。main()メソッドは、Java VMが最初に実行するメソッドとしてJavaア

プリケーションの仕様で定められています。

public static voidもそれぞれ予約語です。ここのpublicは、メソッドがどのクラスからでも利用可能と

いうことです。staticは、メソッドがコンパイルの直後から存在するということです。voidは、メソッドが値

を返さないということです。詳細については、[第8章メソッドの概要]で説明します。

また、main()メソッドには、String型の配列argsがパラメータ(引数:ひきすう)として渡されます。これを

コマンドラインパラメータ(コマンドライン引数)といいます。これはjavaコマンドを使ってプログラムを起動

するときに文字列を渡すことができます。詳細については、[第8章メソッドの概念]で説明します。

ここではmain()メソッドはこのように定義するとだけ理解しておいてください。

3行目

System.out.println("Hello");

System.out.println( )メソッドを呼び出しています。このSystem.out.println()メソッドはパラメータで渡

された文字列を画面上に表示(標準出力)します。コード中のドット(. ピリオドともいう)は、「~の中にあ

る~」と解釈できます。つまり、この場合はSystemの中にある、outの中のprintln()メソッドを呼び出し

ています。

コーディングするときには、文(命令あるいは実行されるコマンドと考えてください)のあとにセミコロン(;)が付

いていることに注意してください。セミコロンは文の最後に付けます。文は、Javaインタプリタによって解

釈されてひとつずつ実行されます。

{ }で囲まれた文のグループをコードブロックといいます。コードブロックには複数の文を記述できます。

15

2

Java_chap02v12_130121 2/8/13 5:24 PM ページ 15

Page 26: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章 Javaプログラミングをはじめよう

System.out.println("Hello!");のあとにいくつもの文を続けて記述することができます。

4行目

}

main()メソッドの宣言の終わりを表します。

5行目

}

クラス宣言の終わりを表します。

プログラミングに慣れないころは、この } (中カッコ閉じ)を忘れがちです。 } がないとコンパイルし

たときにエラーとなって、さらにそれ以降のコードに影響を与えてしまうので十分に注意してください。

例題プログラム(Hello.java)では、println()メソッドの( )の中に指定した文字列が表示されました。メ

ソッドの( )の中に指定したものをパラメータ(引数)といいます。println()の場合、パラメータに任意の

文字列を指定すれば、それを画面(コンソール)に表示して改行します。改行とは、カーソルを次の行の先

頭に移動することです。また、パラメータには文字列のほか数値などのデータも指定できます。

●確認問題2.1

次の説明文に該当する字句を答えなさい。

①ブロックコメントを書くときの記号 ( )

②1行コメントを書くときの記号 ( )

③後置コメントを書くときの記号 ( )

④ドキュメント用コメントを書くときの記号 ( )

⑤プログラムを読みやすくするため字下げすること ( )

⑥ Java VMが最初に実行するメソッド ( )

16

2

Java_chap02v12_130121 2/8/13 5:24 PM ページ 16

Page 27: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

2.2 計算するプログラム

(1)算術演算子

Javaでは、加減乗除(四則演算)を行う場合に使用する記号を算術演算子といいます。ただし、算数で

使う乗除算の記号とは少し違った記号を使用してコーディングします。また、算数にはない剰余(わり算し

た余り)を求める演算子が用意されています。次の表にJavaで使用する算術演算子を示します。

表2.1 算術演算子

計算の種類 算数で使う記号 Javaの算術演算子(読み方) 使用例

加算:たし算 + + (プラス) 2 + 7

減算:ひき算 - - (マイナス) 2 - 7

乗算:かけ算 × * (アスタリスク) 4 * 7

除算:わり算 ÷ / (スラッシュ) 7 / 4

剰余算:余りを求める なし % (パーセント) 7 % 4

剰余算の利用

みなさんは、4年に一度うるう年になることはご存じでしょう。たとえば、西暦2016年はうるう年です。そして、次のうるう年は西暦2020年です。うるう年かどうかを判定するには、もう少し厳密なルールがありますが、さしあたっては西暦を4でわった余りが0のときにうるう年と判断できます。また、奇偶数の判定にも利用できます。この場合は、2でわった余りが0であれば偶数と判断できます。剰余算は、このほかにもいろいろと利用方法がありますのでぜひ覚えておきましょう。

17

2

「computer(コンピュータ)」という単語を日本語に直訳すると「電子計算機」となります。ただし、コンピュータが自ら考えて結果を出してくれるわけではありません。どんなに単純な処理(計算)であろうが、複雑なものであろうが結果を得るためには、プログラミングする必要があります。すなわち、その処理方法をプログラムで指示しなければなりません。もし、それがまちがっているとコンピュータは正しい結果を出せません。ここでは、Javaでコンピュータに計算させる方法を説明します。

計算するプログラム2.2

Java_chap02v12_130121 2/8/13 5:24 PM ページ 17

Page 28: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章 Javaプログラミングをはじめよう

(2)計算結果の表示

計算結果を表示する例題プログラム(Calc1.java)で算術演算の例を示します。

プログラムは式の可読性(読みやすさ)を意識してコーディングしてください。一般には値と演算子の間にス

ペースを入れてコーディングします。

例題プログラム(Calc1.java)

public class Calc1 {

public static void main(String[] args) {

System.out.println(2 + 7 - 5); // ① 加減算の結果を表示

System.out.println(2 * 7 / 8); // ② 乗除算の結果を表示

System.out.println(17 % 7); // ③ 剰余算の結果を表示

}

}

プログラムの実行結果

実行結果を見ると上から加減算、乗除算、そして剰余算の結果が表示されています。

注意しなければならないのは、「2 * 7 / 8」の除算結果が1.75ではなく1になることです。Javaでは、計

算に整数を指定するとその結果も整数で求められます。したがって、小数点以下は切り捨てられてしまいま

す。このような整数と整数の計算を整数演算と呼んでいます。

コンピュータは小数を浮動小数点数として扱い整数と区別して取り扱っています。ですからコンピュータに

処理を行わせるためには、プログラムでこれらを区別し、それぞれに合った指示をしなければなりません。

詳しくは[第3章データの記憶]で説明します。

>java Calc1413

>

18

2

Java_chap02v12_130121 2/8/13 5:24 PM ページ 18

Page 29: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

2.2 計算するプログラム

(3)数式と優先度

基本的な計算式の記述方法は理解できたと思います。それでは、次の例題プログラム(Calc2.java)の

実行結果を予想してください。

public class Calc2 {

public static void main(String[] args) {

System.out.println(4 + 3 * 2);

}

}

みなさんもプログラミングしてプログラムを実行してください。結果は、「10」と表示されます。この結果から

もわかるとおり、計算の優先順位は算数のルールと同じです。すなわち、加減算より乗除算が優先して

計算されます。もし、4 + 3で加算した結果に2をかけるのであれば「(4 + 3) * 2」と優先する式を( )で

囲みます。これも算数で慣れているルールと同じです。

Javaで優先順位の高いものから順に示します。

• ( )の中

• 乗算、除算、剰余算

• 加算、減算

また、「6 * 5 / 3」のように優先順位が同じ場合は左側の式から評価(実行)されます。つまり、「(6 * 5) /

3」と記述したのと同じです。これを結合規則といいます。

Javaには算術演算子のほか、いろいろな演算子があります。これらの演算子とその優先順位は[付録

A3演算子の優先順位]を参照してください。演算子の中にはその優先順位が判断しにくいものもありま

す。そのときは、わかりやすいプログラムを作成するためにも( )を使って優先順位を明示するのがよい

でしょう。

●確認問題2.2

次の式をJavaで実行した場合の計算結果はいくつになるか答えなさい。

① 10 - 20 / 5 ( )

② 4 * 5 - 6 / 3 ( )

③ (4 - 6) / 2 ( )

④ 9 - 3 * 2 + 5 ( )

⑤ 100 - 100 / 100 ( )

⑥ 5 / 10 + 10 ( )

⑦ 5 + 10 % 2 ( )

⑧ 7 * 5 * 0 * 10 * 3 ( )

⑨ -2 - 10 ( )

⑩ 0 / 1000 ( )

19

2

Java_chap02v12_130121 2/8/13 5:24 PM ページ 19

Page 30: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章 Javaプログラミングをはじめよう

(1)文字列の連結

文字列の連結について説明します。文字列の連結とは2つ以上の文字列をひとつにつなげることです。

たとえば、「"Hello!" + "How you doing?"」と文字列を連結します。このとき、プラス(+)の記号を使っ

ていますが、これを文字列連結演算子といいます。+は加算の記号としても使用しますが、文字列と文字

列を連結するときにも使用します。次にその例を示します。

文字列の連結の例

"Hello!" + "How you doing?" (連結後) "Hello!How you doing?"

"My " + "Name " + "is " + "Ryu." (連結後) "My Name is Ryu."

これらの例では、それぞれを"Hello!How you doing?"や"My Name is Ryu."とひとつの文字列で記

述した方が簡単ですから、かえって面倒に思えます。しかし、文字列連結演算子では文字列のほかに数

値などのデータとも連結が可能です。演算される対象のいずれかひとつでも文字列だったときに+は文字

列連結演算子として扱われます。したがって、文字列を連結したあとに加算式を組み合わせるときには、

加算式を( )で囲まなければなりません。そうしないと加算の+が文字列連結演算子として解釈されてし

まいます。

数値と文字列を連結した例

100 + "years" (連結後) "100years"

計算結果と文字列を連結して表示する例 (例題プログラム(Calc3.java))

public class Calc3 {

public static void main(String[] args) {

System.out.println("2 + 7 = " + (2 + 7));

System.out.println("2 - 7 = " + (2 - 7));

}

}

20

2

簡単なプログラムの作成をとおして、よいプログラムを作るために心がけることやエラーに対処する方法などについて説明します。これからは、小さなプログラムでも構わないのでひとつでも多くのプログラムを作成してください。また、プログラムを読むだけではなく実際に動作させるまでの作業にも慣れてください。

簡単なプログラムの作成2.3

Java_chap02v12_130121 2/8/13 5:24 PM ページ 20

Page 31: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

2.3 簡単なプログラムの作成

加算式を( )で囲まずにコーディングすると、文字列として連結してしまうので注意が必要です。次の例

の場合は、「2 + 7」で2と7が連結され27となってしまいます。

加算式を( )で囲まなかった場合の例

System.out.println("2 + 7 = " + 2 + 7);

表示結果

減算式を( )で囲まなかった場合には、次のようなコンパイルエラーが発生します。ただし、乗除算では

問題が発生しません。問題は発生しないものの可読性を高めるためにも文字列と計算結果を連結すると

きには( )で囲むようにしましょう。

減算式を( )で囲まなかった場合の例

System.out.println("2 - 7 = " + 2 - 7);

コンパイルの結果

>javac Calc3.javaCalc3.java:4: エラー: 二項演算子'-'のオペランド型が不正です

System.out.println("2 - 7 = " + 2 - 7);^

最初の型: String2番目の型: int

エラー 1 個

>

2 + 7 = 27

>java Calc32 + 7 = 92 - 7 = -5

>

21

2

Java_chap02v12_130121 2/8/13 5:24 PM ページ 21

Page 32: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章 Javaプログラミングをはじめよう

(2)文字列の入力

プログラムの中で指定した文字を表示するだけではなく、入力した文字列を表示させるプログラムを紹介

します。ただし、入力処理を行うには例外処理(エラー処理)などを含めなければ正しくプログラムが動作

しません。ここでは、使い方を理解するだけで十分です。詳しくは、[第9章 ストリーム入出力]で説明し

ます。まずは、「習うより、慣れろ」の気持ちでプログラミングしてみましょう。

入力文字列の表示プログラム(Hello4.java)

import java.io.*;

public class Hello4 {

public static void main(String[] args) throws IOException {

/* 入力の準備 */

BufferedReader br =

new BufferedReader(new InputStreamReader(System.in));

/* プロンプト(入力を促すメッセージ)の表示 */

System.out.println("お名前は?");

/* キーボードから入力 */

String name = br.readLine();

/* 入力された文字列 + あいさつ文 の表示 */

System.out.println(name + "さん、こんにちは");

}

}

このプログラムは、メッセージを表示してユーザにキーボードから文字列を入力してもらい、それを表示しま

す。文字列を表示していただけのHello.javaプログラムとの違いがわかるように強調表示しました。以下、

それらについて順に説明します。ただし、throws IOExceptionについては最後に説明します。

import java.io.*;は、入力の準備を行うBufferedReaderクラスとInputStreamReaderクラスを使用

するための準備です。

そして、入力の準備として入力情報を受け取るbrというオブジェクトを用意しています。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

は、1行で記述しても構いません。また、brは別の名前でも構いません。

String name = br.readLine( )では、キーボードから入力された文字列をnameという入れ物(変数)で受

け取っています。変数については[第3章データの記憶]で詳しく説明します。

22

2

Java_chap02v12_130121 2/8/13 5:24 PM ページ 22

Page 33: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

2.3 簡単なプログラムの作成

次にSystem.out.println(name + "さん、こんにちは");で、入力された文字列と「こんにちは」という文

字列を連結して表示しています。

throws IOExceptionは、例外が発生したときの対処です。例外とは、プログラム動作における予期せ

ぬ事象(エラー)のことをいいます。入力処理を行う場合も予期せぬエラーが発生することがあります。こ

のときプログラムは例外の情報を生成してJavaの実行システムに渡します。この処理を「例外をスローす

る」といいます。

少しむずかしいと感じるかもしれませんが、今はまだ内容を十分に理解できなくても構いません。ここでは、

キーボードからの入力ができれば十分です。この処理をいろいろなプログラムに利用してみましょう。

プログラムを実行すると「お名前は?」が表示されカーソルが点滅します。ここで名前を入力して、[Enter]

キーを押してください。入力は日本語でも構いません。次にプログラムの実行例を示します。

(3)入力データの整数への変換

入力された文字列は、そのまま計算などに利用できません。IntegerクラスのparseInt()メソッドで整数

に変換する必要があります。Integerクラスは整数を扱う上で便利な機能を持っています。ここでは、使

い方だけを理解してください。詳しくは[第3章データの記憶]で説明します。

文字列入力と整数への変換プログラム(Calc4.java)

import java.io.*;

public class Calc4 {

public static void main(String[] args) throws IOException {

/* 入力の準備 */

BufferedReader br =

new BufferedReader(new InputStreamReader(System.in));

/* メッセージを表示 */

System.out.println("整数を入力してください");

/* キーボードから入力 */

String str = br.readLine();

>java Hello4お名前は?RyutaroRyutaroさん、こんにちは

>

23

2入力したデータ

Java_chap02v12_130121 13.2.8 17:24 ページ 23

Page 34: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章 Javaプログラミングをはじめよう

/* 整数に変換して計算する */

System.out.println("2倍すると" + (Integer.parseInt(str) * 2));

}

}

String str = br.readLine( );で、キーボードから入力します。入力された文字列は変数strで受け取りま

す。

Integer.parseInt(str)では、文字列を整数に変換します。このとき、文字列に数字以外が入力されると

プログラムは異常終了します。スペースなどの数字以外の文字を入力しないように注意してください。

parseInt()メソッドについては、[第3章 データの記憶]で、もう少し詳しく説明します。このプログラムの

実行例は次のようになります。

これから紹介する例にも文字列入力と整数への変換を利用します。今はまだむずかしいかもしれません

が、まずは利用できることが大切です。例題プログラムを参考にいろいろなプログラムの入力処理に使っ

てみましょう。そして、徐々に理解を深めてください。

●確認問題2.3

次のプログラム(ExeCalc.java)の実行結果を答えなさい。

public class ExeCalc {

public static void main(String[] args) {

System.out.println("127 + 128 = " + (127 + 128));

System.out.println("100 - 68 = " + (100 - 68));

System.out.println("16 * 16 = " + (16 * 16));

System.out.println("10 / 100 = " + (10 / 100));

System.out.println("2005 % 4 = " + (2005 % 4));

}

}

>java Calc4整数を入力してください

1282倍すると256

>

24

2 入力したデータ

Java_chap02v12_130121 13.2.8 17:24 ページ 24

Page 35: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

2.4 デバッグ

(1)エラーとの戦い

プログラムの大きさが大きくなるにつれてバグも増えてきます。セミコロンの付け忘れやスペルミスがあると

コンパイルエラーが発生します。ときには目に見えないバグが潜むことさえあります。

セミコロン(;)の付け忘れ

例題プログラム(Hello2.java)には、バグがあります。コンパイルエラーを参考にデバッグします。

/*

* Hello!

* How you doing? と表示するプログラム

*/

public class Hello2 {

public static void main(String[] args) {

System.out.println("Hello!") // 1行目の表示

System.out.println("How you doing?"); // 2行目の表示

}

}

コンパイルの結果

「System.out.println("Hello!")」と文の終わりにセミコロン(;)を付け忘れていました。

>javac Hello2.javaHello2.java:7: エラー: ';'がありません

System.out.println("Hello!") // 1行目の表示^

エラー 1 個

>

25

2

プログラミングでもっとも重要なことがプログラムのテストとデバッグです。テストとは、プログラムが正しく動作するかを検証することです。そしてデバッグは、プログラムに潜むバグ(誤り)を見つけて修正することです。このテストとデバッグが行われていないプログラムは、使い物にならないといってもいいでしょう。簡単なプログラムでエラーに対処する方法を学びましょう。

デバッグ2.4

エラーの内容とその場所を示す。

これらをもとにソースファイルを修

正して再度コンパイルする

Java_chap02v12_130121 13.2.8 17:24 ページ 25

Page 36: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章 Javaプログラミングをはじめよう

修正するコード(強調表示が修正箇所)

System.out.println("Hello!"); // 1行目の表示

修正が終わったら、ファイルを保存して再度コンパイルします

コンパイルの結果

プログラムの実行

プログラムが正しく動作しました。

見えない文字(全角スペース)によるエラー

次の例題プログラム(Hello3.java)で発生したエラーは、なかなか発見できない難問です。

public class Hello3 {

public static void main(String[] args) {

System.out.println("こんにちは"); // メッセージの表示

System.out.println("元気ですか?");

}

}

コンパイルの結果

>javac Hello3.javaHello3.java:4: エラー: ¥12288は不正な文字です

System.out.println("元気ですか?");^エラー 1 個

>

>java Hello2Hello!How you doing?

>

>javac Hello2.java

>

26

2

エラーが何も表示されなかったときコンパイル成功

「java Hello2」と入力して[Enter]キーを押す

プログラムの実行結果を表示する

コマンドプロンプトに戻る

Java_chap02v12_130121 13.2.8 17:24 ページ 26

Page 37: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

2.4 デバッグ

「¥12288 は不正な文字です」というメッセージですが、一見したところまちがいはなさそうです。実は、こ

こに全角スペース(文字コードは10進数12288、16進数0x3000(Unicode))が入力されていました。で

すから見た目には、わからなかったわけです。

□ System.out.println("元気ですか?");

Javaでは全角文字(日本語)を文字列とコメント以外では原則として使えません。コードはすべて半角文字

(ASCIIコード)でコーディングします。コメント入力など日本語入力のあとには十分注意してください。

プログラム実行時のエラー

プログラムをコンパイルしてエラーが発生しなくてもプログラムが正しく実行できない場合があります。これ

を実行時エラー(例外)といいます。たとえば、Java VMが最初に実行するmain( )メソッドの名前をまち

がえても実行時エラーになります。これは、コンパイルしただけでは発見できないエラーです。

それでは、「故意にmeinとスペルミス」をして実験してみましょう。

public class Hello2 {

public static void mein(String[] args) {

System.out.println("Hello!"); // 1行目の表示

System.out.println("How you doing?"); // 2行目の表示

}

}

プログラムの実行結果

Java VMが最初に実行するmain()メソッドを見つけられず、実行時エラーが発生しました。これを例外

の発生と呼び、プログラムは異常終了します。プログラムを作成するときには、キーワードなどのスペルミ

スや英大文字小文字の区別に注意してコーディングしてください。

また、次のように「java hello2」(Hが小文字)などと、まちがったクラス名を指定しても実行時エラーにな

りますので注意してください。

>java Hello2エラー: メイン・メソッドがクラスHello2で見つかりません。次のようにメイン・メソッドを定義してください。

public static void main(String[] args)

>

27

2

ここに全角スペースが入力されている

main()メソッドが見つからなかったことで

エラーが発生する

Java_chap02v12_130121 13.2.8 17:24 ページ 27

Page 38: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章 Javaプログラミングをはじめよう

計算結果の誤差

先に、Javaでの整数除算の結果は、小数以下が切り捨てられてしまうことがわかりました。

もし、「7 / 4」の結果を「1.75」と切り捨てたくない場合は「7 / 4.0」などと少なくともどちらか一方(両方で

もよい)を小数にします。また、割り切れない場合などに誤差が発生することがあります。これは、バグで

はないものの注意して扱う必要があります。例題プログラム(Calc5.java)でその例を示します。

例題プログラム(Calc5.java)

public class Calc5 {

public static void main(String[] args) {

System.out.println(7 / 4.0); // 割り切れる場合

System.out.println(7 / 3.0); // 割り切れない場合

}

}

プログラムの実行結果

「7 / 4.0」では「1.75」と正しく結果が表示されました。

「7 / 3.0」の結果は「2.3333333333333335」と表示されました。このようにコンピュータで小数を含む計

算を行うと誤差が発生してしまうことがあります。これは、コンピュータが実数を浮動小数点数で表現して

いるために起こる性質です。浮動小数点数の詳細は、[第3章データの記憶]で説明します。

浮動小数点数で表現した実数は、あくまでもその「近似値」にすぎません。ですから、「誤差」を含んでしまうことがあります。また、プラットフォームの違いにより、その値が異なることもあります。

>java Calc51.752.3333333333333335

>

>java hello2Exception in thread "main" java.lang.NoClassDefFoundError: hello2 (wrong name: Hello2)

>

28

2

Java_chap02v12_130121 2/8/13 5:24 PM ページ 28

Page 39: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

2.4 デバッグ 29

2

Columnエラーのはなし

プログラミングには、エラーが付き物です。エラーにもいろいろな種類のものがあります。

大まかには、次の3種類に分類できるでしょう。

• 構文エラー : コンパイルしたときに発生する言語の文法的なエラー

• 例外 : プログラムを実行したときに発生するエラー

• 論理エラー : プログラムを実行したときに予想し得ない動作や結果になるエラー

構文エラーは、コードの記述中に誤りがあると発生するエラーです。Javaのコンパイラ

でチェックするとき、スペルの誤りやコードの要素の使い方がまちがっていると構文エラー

と判断されて、エラーメッセージを示します。これはコンパイルエラーとも呼ばれ、比較的

簡単に修正できます。

例外は、コンパイルが成功してプログラムを実行してからでないと発生しないエラーです。

たとえば、数値を0で除算したり、キーボード入力時にエラーが発生したり、指定したファ

イルがなかったときに発生します。例外が発生するとそれ以降の処理を実行せずにエラーメ

ッセージを出力してプログラムを異常終了します。しかし、例外が発生したときの後始末を

プログラムの中で行いたい場合や、処理を続行させたい場合もあります。Javaでは、この

ようなときのために例外処理というしくみを用意しています。例外処理については、[第9

章 9.3 例外処理]で詳しく説明します。

論理エラーは、コードは問題なく実行されるが、予想していたものと違う動作や結果とな

るエラーです。プログラムを設計する段階の処理手順(アルゴリズム)に含まれていた誤り

が原因になることも少なくありません。このエラーは、原因が明らかでない場合もあり、一

般に修正がむずかしいエラーです。

プログラミングは、まさにこうしたエラーとの戦いになります。エラーにうまく対処する

ためには、「 ~ しているはず」と決め付けずに、「もしかしたら ~ かも」とコードひ

とつひとつを丁寧、かつ慎重に読んで(追って)いく必要があります。

Java_chap02v12_130121 13.2.8 17:24 ページ 29

Page 40: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章 Javaプログラミングをはじめよう

(1)エラーを含むプログラムの修正

演習問題2.1と2.2は、複数の誤りを含んだプログラムです。エラーメッセージを参考にして修正してくだ

さい。誤りの中には、コンパイルエラーのメッセージが表示されず、実行時エラーになるものも含まれて

います。エラーを修正していくことで、プログラミングの作業に慣れていきましょう。

■演習問題2.1

次のデバッグ練習用のプログラム(DebugTraining1.java)には、バグがあります。この状態でコンパイ

ルした結果と想定されるプログラムの実行結果をもとにプログラム中のすべてのバグを修正しなさい。

ヒント:プログラムの誤りは、実行時エラーになるものも含めて全部で7箇所あります。

デバッグがすべて完了した時点の実行結果は次のようになります。

作成途中のソースコード:デバッグ練習1(DebugTraining1.java)

01: /*

02: *デバッグ練習1

03: */

04: pablic class DebugTraining1 {

05: public static void nnain(String[] args) {

06: System.Out.println("Hello!");

07: system.out.println("How you doing?")

08: System.out.println("Okay thanks.");

09: System.out.println("How about you?);

10: }

>java DebugTraining1Hello!How you doing?Okay thanks.How about you?

>

30

2

プログラミングに慣れるまでは、たくさんのエラーとの戦いになります。何度コンパイルしてもエラーがなくならず、プログラミングが嫌いになるかもしれません。しかし、入力ミスやJavaの構文エラーなどに気が付きプログラムが正しく動作したときには達成感があるでしょう。エラーメッセージには、プログラム修正に必要なヒントがたくさん含まれています。これを嫌がらずにひとつひとつしっかりと読んで修正しましょう。

プログラミング演習2.5

Java_chap02v12_130121 2/8/13 5:24 PM ページ 30

Page 41: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

2.5プログラミング演習

コンパイルの結果

javacコンパイラのバージョンの違いにより、エラーメッセージが異なることがあります。このプログラム

のコンパイルには、JDK 1.7.0_09のjavacコンパイラを利用しました。

エラーメッセージの読み方

たくさんのエラーが発生しましたが、落ち着いてエラーメッセージを読んでください。必ずバグが見つかりま

す。エラーメッセージの読み方は次の図を参考にしてください。

もうひとつ注意すべき点は、ひとつの誤りがエラーのないところにまで影響を及ぼしてしてしまう

ことがあることです。次のエラーは、セミコロン (;) があるのにエラーが表示されています。これは、ひとつ

前の誤り(エラー:文字列リテラルが閉じられていません)が影響したために発生したものです。

DebugTraining1.java:4: エラー: class、interfaceまたはenumがありませんpablic class DebugTraining1 {^

>javac DebugTraining1.javaDebugTraining1.java:4: エラー: class、interfaceまたはenumがありませんpablic class DebugTraining1 {^DebugTraining1.java:7: エラー: ';'がありません

system.out.println("How you doing?")^

DebugTraining1.java:9: エラー: 文字列リテラルが閉じられていませんSystem.out.println("How about you?);

^DebugTraining1.java:9: エラー: ';'がありません

System.out.println("How about you?);^

DebugTraining1.java:10: エラー: 構文解析中にファイルの終わりに移りました}^DebugTraining1.java:11: エラー: 構文解析中にファイルの終わりに移りましたエラー6個

>

31

2

ソースファイル名 行番号 エラーメッセージ(エラー内容の説明)

エラーを検知した場所

Java_chap02v12_130121 13.2.8 17:24 ページ 31

Page 42: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章 Javaプログラミングをはじめよう

最初のエラーメッセージに関連する項目を修正して、もう一度コンパイルした結果を次に示します。

コンパイルエラーがなくなった時点の実行結果を次に示します。メソッド名のスペルミスが原因で、

実行時エラーになりました。

コンパイルだけでは、発見できない誤りもありますので注意してください。

なお、このプログラムのコンパイルと実行には、JDK 1.7.0_09を利用しました。

■演習問題2.2

次のデバッグ練習用のプログラム(DebugTraining2.java)には、バグがあります。この状態でコンパイ

ルした結果をもとに、プログラム中のすべてのバグを修正しなさい。

ヒント: プログラムの誤りは、実行時エラーになるものも含めて全部で5箇所あります。

似ていてまちがいやすい文字に注意してください。たとえば、イチとエルとスラッシュ( 1 と l と / )、大文

字のオーと小文字のオーとゼロ( Oと oと 0 )、コロンとセミコロン( :と ; )、ドットとカンマ( .と , )、いろ

いろなカッコ( [ ] や ( ) や { } )などです。また、英大文字小文字の違いにも注意してください。

>java DebugTraining1エラー: メイン・メソッドがクラスDebugTraining1で見つかりません。次のようにメイン・メソッドを定義してください。

public static void main(String[] args)

>

>javac DebugTraining1.javaDebugTraining1.java:6: エラー: シンボルを見つけられません

System.Out.println("Hello!");^

シンボル: 変数 Out場所: クラス System

DebugTraining1.java:7: エラー: パッケージsystemは存在しませんsystem.out.println("How you doing?");

^エラー2個

>

DebugTraining1.java:9: エラー: ';'がありませんSystem.out.println("How about you?);

^

32

2

';'があるのにエラー発生

Java_chap02v12_130121 13.2.8 17:24 ページ 32

Page 43: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

2.5プログラミング演習

作成途中のソースコード:デバッグ練習2(DebugTraining2.java)

01: public class Debugtraining2 {

02: public void main(String[] args) {

03: System.out.print1n("こんにちは");

04: System.out.println("元気ですか?"):

05: ]

06: }

コンパイルの結果

4行目を修正して、もう一度コンパイルした結果を次に示します。

5行目を修正して、もう一度コンパイルした結果を次に示します。

>javac DebugTraining2.javaDebugTraining2.java:5: エラー: 式の開始が不正です

]^

DebugTraining2.java:6: エラー: 構文解析中にファイルの終わりに移りました}^エラー2個

>

>javac DebugTraining2.javaDebugTraining2.java:4: エラー: ';'がありません

System.out.println("元気ですか?"):^

DebugTraining2.java:6: エラー: 構文解析中にファイルの終わりに移りました}^エラー2個

>

33

2

Java_chap02v12_130121 2/8/13 5:24 PM ページ 33

Page 44: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章 Javaプログラミングをはじめよう

1行目と3行目を修正して、コンパイルエラーがなくなった時点での実行結果を次に示します。ただ

し、ファイル名には誤りがないものとして1行目のクラス名を修正します。

コンパイルだけでは、発見できない誤りもありますので注意してください。

なお、このプログラムのコンパイルと実行には、JDK 1.7.0_09を利用しました。

(2)正しく結果が表示されないプログラム

演習問題2.3と2.4は、正しく結果が表示されないプログラムです。想定される結果との違いやプログラ

ムの異常終了の原因を明らかにしながら、デバッグの練習をしましょう。

■演習問題2.3

下底20、上底15、高さ10の台形の面積を求めるプログラム(Daikei.java)を作成しました。しかし、

結果が正しく求められませんでした。プログラムを正しく修正しなさい。

>java DebugTraining2エラー: メイン・メソッドがクラスDebugTraining2のstaticではありません。次のようにメイン・メソッドを定義してください。

public static void main(String[] args)

>

>javac DebugTraining2.javaDebugTraining2.java:1: エラー: クラスDebugtraining2はpublicであり、ファイルDebugtraining2.javaで宣言する必要がありますpublic class Debugtraining2 {

^DebugTraining2.java:3: エラー: シンボルを見つけられません

System.out.print1n("こんにちは");^

シンボル: メソッド print1n(String)場所: タイプPrintStreamの変数 out

エラー2個

>

34

2

Java_chap02v12_130121 2/8/13 5:24 PM ページ 34

Page 45: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

2.5プログラミング演習

台形の面積を求めるプログラム(Daikei.java)

public class Daikei {

public static void main(String[] args) {

System.out.println("台形の面積は" + 20 + 15 * 10 / 2 + "です");

}

}

■演習問題2.4

次の実験用のプログラム(Laboratory.java)を実行したところ、エラーが発生してプログラムが異常終了

してしまいました。プログラムと実行時の表示結果とそのエラーメッセージを参考にエラーの原因となった

命令を指摘しなさい。

実験用のプログラム(Laboratory.java)

public class Laboratory {

public static void main(String[] args) {

System.out.println(-10 + -10);

System.out.println(-10 * 0);

System.out.println(0 / (1 * 2));

System.out.println(10 / 0);

System.out.println(8 % -3);

}

}

プログラムの実行結果

(3)文字列表示のプログラミング演習

ここからの演習問題は、println()メソッドを使用して、いろいろな文字列を表示するプログラムの作成で

す。ひとつでも多くのプログラムを作ることで、プログラミング開発の手順を完全にマスターしてください。

>java Laboratory-2000Exception in thread "main" java.lang.ArithmeticException: / by zero

at Laboratory.main(Laboratory.java:6)

>

35

2

Java_chap02v12_130121 2/8/13 5:24 PM ページ 35

Page 46: Java入門 Java 7版 - scc-kk.co.jp · グ演習をとおして、よいプログラムを作る上で必要なテス トやデバッグの知識も身に付けることができるで

第2章 Javaプログラミングをはじめよう

■演習問題2.5

あなたの名字(姓)と名前(名)を2行で表示するプログラム(NameDisp1.java)を作成しなさい。

プログラムの実行例

■演習問題2.6

あなたの名字(姓)と名前(名)をあえて文字列の連結を用いて1行で表示するプログラム(NameDisp2.

java)を完成させなさい。

/*

* 氏名を表示するプログラム2 (NameDisp2.java)

*/

public class NameDisp2 {

public static void main(String[] args) {

System.out.println( );

}

}

プログラムの実行例

■演習問題2.7

文字列表示のプログラムが作成できるようになりましたね。それでは、文字列の入力や好きなメッセージ

を表示するプログラムを作成しなさい。たとえば、氏名のほか年齢や住所、そして電話番号などを表示し

てもよいでしょう。自由にたくさんのプログラムを作りなさい。

また、故意にまちがったプログラムを作成して、エラーメッセージを読む練習をするのもよいと思います。も

し、一緒にプログラミング練習をする仲間がいるのでしたら、お互いのソースコードに決めた数だけバグ

を埋め込み、まちがい探し競争をするのもよいでしょう。こうすると見つけにくいエラーも自然に見つけられ

るようになります。

>java NameDisp2Seto Marino

>

>java NameDisp1SetoMarino

>

36

2

日本語での表示も可能

Java_chap02v12_130121 13.2.8 17:24 ページ 36