「改訂第2版 Java言語プログラミング(上)」読了

Javaを勉強し始めてから1週間ほど経過。
教科書として読み進めていた、改訂第2版 Java言語プログラミングレッスン (上)が読み終わったところなので、進捗具合をブログにアップしたいと思います。

教科書の内容は、

■ Hello!を表示させるプログラム
■ 四則演算
■ 変数
■ if文
■ switch文
■ for文
■ while文とString型
■ メソッド
■ 配列
オブジェクト指向のさわり

読み進めていく中で印象的だったプログラムや、自分で勘違いしていたものを書いてみると、

import java.io.*;

public class Kasa3 {
	public static void main(String[] args) {
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		
		try  {
			System.out.println("降水確率を入力してください。");
			String line = reader.readLine();
			int n = Integer.parseInt(line);
			System.out.println("降水確率は" + n +"%です。");
			
			if (n<0 || 100<n) {
				System.out.println("降水確率は0〜100の間ですよ。");
			} else if (n>=50) {
				System.out.println("傘を忘れずにね。");
			} else {
				System.out.println("傘は入りません。");
			}
			
			System.out.println("いってらっしゃいませ。");
		} catch (IOException e) {
			System.out.println(e);
		} catch (NumberFormatException e) {
			System.out.println("数字の形式が正しくありません。");
		}
	}
}

実行後、降水確率を入力してその値に応じて返答を表示させるというプログラム。String型で読み込んだものを、int型に変換するという考え方が最初よくわかりませんでしたが、徐々に慣れていくにつれ、理解してきました。


続いて、for文。

↓を表示させるプログラムを書け


○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○
○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○
○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○
○○○○○○○○○○○○○○○○○○○○○○○○○
○○○○○○○○○○○○○○○○
○○○○○○○○○
○○○○



○○○○
○○○○○○○○○
○○○○○○○○○○○○○○○○
○○○○○○○○○○○○○○○○○○○○○○○○○
○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○
○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○
○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○○

public class Mondai8_2 {
   public static void main(String[] args) {
       for (int i = -8; i<=8; n++) {
           printGraph(i*i);
       }
   }
      public static void printGraph(int x) {
           for (int j = 0; j<x; j++) {
               System.out.print("*");
           }
           System.out.println("");
   }
}

これはメソッドの章で出てきた問題。forをマイナスから始める発想がなくて自力では書けなかった。(しかし、わざわざメソッド使わなくても、for文を繰り返せば書けるのでは?とも思いましたが。。。)


続いて、配列。

配列の要素を小さい順に並び替えるプログラムを書け

public class SortData {
	public static void main(String[] args) {
		int[] data = {31,41,59,26,53,58,97,93,23,84};
		System.out.println("並べ替える前");
		for (int i = 0; i < data.length; i++) {
			System.out.print(data[i]+" ");
		}
		System.out.println("");
		for (int i = 0; i<data.length ; i++) {
			for (int j = i+1; j<data.length; j++) {
				if (data[i]>data[j]) {
					// 交換
					int a = data[i];
					data[i] = data[j];
					data[j] = a;
				}
			}
		}
		System.out.println("並べ替えた後");
		for (int i = 0; i < data.length; i++) {
			System.out.print(data[i] + " ");
		}
		System.out.println("");
	}
}

配列要素の中で一番大きなものを表示させるプログラムを書いていたので、意外と書けるかと思いきや、int a に配列の要素を一旦入れ、配列の順番を入れ替えるという部分が思いつかず。解答をみて、なるほどと関心。


練習問題意外にも、if文の条件式で、String型の場合は、「==」 ではなく、「equals("")」と表記することや、大文字小文字を間違える、「{」「}」が足りない、といった基本的なところでコンパイルエラーとなるなど、ところどころつまずくところもありましたが、とりあえずオブジェクト指向の前段階は終了しました。


これからは、いよいよオブジェクト指向に突入です。
教科書は改訂第2版 Java言語プログラミングレッスン (下)を使用予定。
今のところ、毎日楽しく学べているので、オブジェクト指向に進んでも、重要なところはしっかり押さえつつ、楽しみながら、一歩一歩進んでいこうと思います。
後、プログラムとは関係ないけど、早く咳風邪を直さねば。。。つらいわけではないのですが、咳が止まらない病に土曜日あたりからかかっています。栄養あるもの食べて、しっかり寝て、早めに直します。



*ちなみに、前エントリー時の文字化けに関しては、ターミナル>環境設定>設定タブ>詳細>言語環境の文字エンコーディングを日本語Shift Jis に変更したら即解決。さすが、google先生