このブログを検索

2019年4月30日火曜日

やさしいjava 6版 Lesson3〜5 練習問題

やさしいjava 6版
 Lesson3〜5 練習問題
少し戻って、今まで出来ていた練習問題。

しかし、タイプミスが多いな。。。

今日の教訓
 ふ〜〜〜っ。

2019年4月24日水曜日

Java入門教室 Chapter10-4「ウインドウにボタンを配置する 」

「Java入門教室」

Chapter10-4「ウインドウにボタンを配置する 」

クラスのフィールドって
この様にも使えるのか。。。
 
今日は ポチポチとボタン職人となり 黙々とパソをいじっていました。

今日の教訓
 本日は 写経。

2019年4月23日火曜日

Java入門教室 Chapter10-3「ウインドウを別クラスにする 」コンストラクタに引数・カプセル化

「Java入門教室」
「Chapter10-2「AWTでウインドウを作る 」
まず このサンプルプログラムを少し変えてみました。
<BufferedReader を用いてキーボードからウインドウのサイズを入力>

🌟サンプルプログラム

import java.awt.*;
import java.awt.event.*;
import java.io.*;

class Sample2
{
    public static void main(String[] args) throws IOException
    {
        System.out.println("ウインドウのサイズを入力して下さい。(X座標、Y座標)");
        
        BufferedReader br =
         new BufferedReader(new InputStreamReader(System.in));
        
        String str1 = br.readLine();
        String str2 = br.readLine();
        
        int wx = Integer.parseInt(str1);
        int wy = Integer.parseInt(str2);
        
        Frame fr = new Frame();
        fr.setTitle("終了出来るウインドウ");
        fr.setSize(wx, wy);
        fr.setVisible(true);
        fr.addWindowListener(new addWinListener());
    }
}

class addWinListener extends WindowAdapter
{
    public void windowClosing(WindowEvent e)
    {
        System.exit(0);
    }

}

結果
 入力したサイズでウインドウの製作が出来ました!!


Chapter10-3「ウインドウを別クラスにする 」
また このサンプルプログラムを少し変えてみました。
<BufferedReader を用いてキーボードからウインドウのサイズを入力>
<引数を持つコンストラクタを呼び出し>
<MyWindowクラスのカプセル化>


🌟サンプルプログラム

import java.awt.*;
import java.awt.event.*;
import java.io.*;

class Sample3
{
    public static void main(String[] args) throws IOException
    {
        System.out.println("ウインドウのサイズを入力して下さい(X,Y座標共に 200~800)。");
        
        BufferedReader br =
         new BufferedReader(new InputStreamReader(System.in));
        
        String str1 = br.readLine();
        String str2 = br.readLine();
        
        int px = Integer.parseInt(str1);
        int py = Integer.parseInt(str2);
        
        MyWindow mw = new MyWindow(px, py); //オブジェクトの作成・コンストラクタの呼び出し
    }
}

// MyWindowクラス
class MyWindow extends Frame
{
    private int x;
    private int y;
    
    MyWindow(int px, int py) //引数を持つコンストラクタの記述
    {
        if(px>=200 && px<=800) x = px; else x = 600;
        if(py>=200 && py<=800) y = px; else y = 600;

        setTitle("ウインドウを別のクラスにする");
        setSize(x, y);
        setVisible(true);
        addWindowListener(new WinListener());
    }
}

class WinListener extends WindowAdapter
{
    public void windowClosing(WindowEvent e)
    {
        System.exit(0);
    }

}

結果
 何だか珍しく ちゃんと改造できました。

今日の教訓
 ちゃんと動くと 気持ちいい。

2019年4月22日月曜日

Java入門教室 Chapter10-3「ウインドウを別クラスにする 」その2

「Java入門教室」
「Chapter10-3「ウインドウを別クラスにする 」
AWTを用い 新たに "MyWindow"というクラスを作成し、
その"MyWindow"のクラスでコンストラクタを定義、
"MyWindow"のクラスのオブジェクトが作成された時に、
初期設定にて、自動的にウインドウの作成が行われるプログラム(だと思う)。

このプログラム、たとえば オブジェクトを3つ作れば
3つのウインドウがで来るのかな?


🌟練習問題 10-3

import java.awt.*;
import java.awt.event.*;

class Sample
{
    public static void main(String[] args)
    {
        MyWindow mw1 = new MyWindow(); //1つ目のオブジェクトの作成・コンストラクタの呼び出し
        MyWindow mw2 = new MyWindow(); //2つ目のオブジェクトの作成・コンストラクタの呼び出し
        MyWindow mw3 = new MyWindow(); //3つ目のオブジェクトの作成・コンストラクタの呼び出し
    }
}

// MyWindowクラス
class MyWindow extends Frame
{
    MyWindow() //コンストラクタの記述
    {
        setTitle("ウインドウを別のクラスにする");
        setSize(600, 400);
        setVisible(true);
        addWindowListener(new WinListener());
    }
}

class WinListener extends WindowAdapter
{
    public void windowClosing(WindowEvent e)
    {
        System.exit(0);
    }

}

結果
 ウインドウは1つしか作成できず。。。

今日の教訓
 10-3 の プログラム もっともっといじってみよう。

2019年4月20日土曜日

Java入門教室 Chapter10-3「ウインドウを別クラスにする 」その1

「Java入門教室」

Chapter10-3「ウインドウを別クラスにする 」
 
GUIの処理ですが 「クラスの継承」とかあり、
元に戻ってみよう。

今日の教訓
 香車の高飛び 歩の餌食。

あ…ありのまま今起こった事を話すぜ!「例外処理 Scanner / Console 」

「Java入門教室」

Chapter9-7「例外処理 Scanner / Console 」
 
あ…ありのまま今起こった事を話すぜ!
「俺は BufferedReader も InputStreamReader も使用せずに キーボードの入力が出来ていた」。
な…何を言っているのかわからねーと思うが、
俺も何をされたのかわからなかった…
頭がどうにかなりそうだった…
へんてこりんな 難しい記述だとか 例外処理だとか、
そんなもんじゃあ断じてねえ。
今までの入力処理は何だったんだろうという、
Rubyの「p」以上の
もっと上をいく 唖然とした感覚を味わったぜ…

今日の教訓
 なんだかんだで 楽しい。

2019年4月18日木曜日

やさしいjava 6版 「式と演算子 Lesson4」 練習問題 5 (例外処理)

やさしいjava 6版
「式と演算子 Lesson4」 練習問題 5
5科目のテストの点数を入力させ、
合計点と平均点を出力させる練習問題。
"Exception e"を用いた例外処理を行いました。

🌟練習問題 4-5

import java.io.*;
class Sample
{
    public static void main(String[] args) throws IOException
    {
        System.out.println("科目1〜5の点数を入力してください。");
        
        int[] test = new int[5]; //テスト点数
        int sum = 0; //合計点
        int num = 0; //点数入力回数
        String str; //入力用(nullを初めに入力)
        
        BufferedReader br =
        new BufferedReader(new InputStreamReader(System.in));
        
        for(int i=0; i<test.length; i++) {
            try {
                str = null; //例外処理を行う為 nullを代入
                str = br.readLine();
                test[i] = Integer.parseInt(str);
                sum += test[i];
                num += 1; //点数入力回数 カウント+
            }catch(Exception e) {
                System.out.println("数字以外が入力されました。 入力値(" + e + ")");
                test[i] = 0;
            }
        }
        System.out.println(test.length + "科目の合計点は" + sum + "点です。");
        System.out.println("うち数値が入力された" + num + "科目の平均点は" + (sum / (double)num) + "点です。");
    }

}

もっと、今まで練習してきた問題に 例外処理を用いてみよう。

今日の教訓
 少しだけ 前身。

2019年4月16日火曜日

Java入門教室 Chapter9「例外処理」

「Java入門教室」

Chapter9「例外処理」
 try〜catchを利用した例外処理。

 今まで 数値を入力する際、文字列を入力するのを防ぐための例外処理は
  try〜
  catch(lang.NumberFormatException e){
 と記入していました。
  catch(IOException e)
 だけでも処理は出来るんですね。
 また
  String str = null;
 と設定しておけば そのまま
  Integer.parseInt(str);
 で整数に変換できます。
 今までの練習問題をいじって 色々、試してみよう。

今日の教訓
 今までの練習問題をいじってみよう。

2019年4月13日土曜日

Java入門教室 Chapter9「クラスについて〜メソッドを定義」

「Java入門教室」

Chapter9「クラスについて〜メソッドを定義」
 classを 新しく宣言した後、フィールド や メソッド を記入することは
 今までも学習してきましたが、
 同じclassの中で メソッドを呼び出す事が出来る事が分かりました。
 (Ruby では def *** で メソッドを呼び出す事が出来ました)
 Rubyの時は メソッドは 本当にチンプンカンプンでした。

今日の教訓
 新たな発見!

Java 入門教室 Chapter7 ,Chapter8 "Javaの利用について"

「Java入門教室」

Chapter7「メソッド」
 メソッドは今まで クラス でしか使用しなかったので
 普通に使える事が新しい発見。
 残念な事に、今まではクラスでも使用してましたが
 "void" や "static"の意味が よく解っていません。
 慣れれはね。

Chapter8「JDKの使い方」
 私はプログラミングを勉強しようとして、
 新しい Mac book proを長期のローンを組んで購入しました。
 当時は Macに あらかじめ "Ruby"が入っていて 色々な 事をしなくても
 プログラミングの勉強が出来る事が理由でした。
 (その後 Rubyは挫折)
 JavaでもMacの場合は ただダウンロードするだけだったので、
 本当に助かっています。
 私が JDKをダウンロードした時は
 まだ オラクルのJava8をインストール出来ましたが、
 最新版の方が良いと思いJava11を選択しました。
 あの時、Java8 にしておけば
 JavaFxを学ぶ機会があったのにと 本当に、後悔をしています。
 JavaFxはまだ使用出来るとネットでは記載がありますが、
 僕の技量では利用できませんでした。
 (そもそも、open jdk をダウンロード出来ていません)
 
 今、Eclipseを使用して学習をしていますが、
 タイプミスがすぐわかり有難く活用をしています。 
 また、テキストエディトで記載した際は、
 class毎にクラスファイルがコンパイルされる事が
  "Ruby"と違いclassの概念を理解できました。

今後、javaの学習の他に 私の足りない事、
 ・Macのターミナルのコマンドの熟知。
 ・Mac Bookのハードの仕組みの理解。
 ・HTML の学習。

今日の教訓
 勉強したい事が具体的である事に感謝。

2019年4月11日木曜日

Java入門教室  Lesson 5-5「二重ループのfor」

「Java入門教室」
Lesson 5-5「二重ループのfor」
「やさしいJava」にも 二重ループを用いた 九九の表の作成問題がありましたが、
(初めて練習問題にぶつかった時には 悶絶しました。)
二重ループを理解するには 九九の表を作成するのが一番わかりやすいのでしょうね。

プログラムを改造して 他のものを作りたかったのですが、
九九の段を反対に表示するものしか出来ませんでした。

⭐️逆 九九の表

class Sample
{
    public static void main(String[] args)
    {
        for(int i=9; i>=1; i--) {
            System.out.print(i + "の段" + "\t");
            for(int j=9; j>=1; j--) {
                System.out.print(i*j + " ");
            }
            System.out.print("\n");
        }
    }

}


今日の教訓
 forの ()内で宣言した変数を forの外側で使えないことに気がつきました。
 ↑ 基礎が出来ていないな。。。

2019年4月10日水曜日

やさしいjava 6版 「クラスの基本 Lesson9」 練習問題 5

やさしいjava 6版
「クラスの基本 Lesson9」 練習問題 5
この「クラスの機能」までは一応 色々出来るんだな。

🌟練習問題 8-5

import java.io.*;

class MyPoint
{
    private int x;
    private int y;
    
    public MyPoint()
    {
        x = 0;
        y = 0;
        System.out.println("初期座標を x=" + x + " y=" + y + "に指定しました。");
    }
    public MyPoint(int px, int py)
    {
        this();
        if(px<=100 && px>=0) x = px;
        if(py<=100 && py>=0) y = py;
        System.out.println("座標を x=" + x + " y=" + y + "に指定しました。");
    }
    public void setX(int px)
    {
        if(px<=100 && px>=0) {
            x = px;
            System.out.println("x座標を" + x + "に設定しました。");
        }
        else {
            System.out.println("入力した x座標の数値は無効です。(" + px + ")");
        }
    }
    public void setY(int py)
    {
        if(py<=100 && py>=0) {
            y = py;
            System.out.println("y座標を" + y + "に設定しました。");
        }
        else {
            System.out.println("入力した y座標の数値は無効です。(" + py + ")");
        }
    }
    public int getX()
    {
        System.out.println("x座標の数値を確認します。");
        return x;
    }
    public int getY()
    {
        System.out.println("y座標の数値を確認します。");
        return y;
    }
}

class Sample
{
    public static void main(String[] args) throws IOException
    {
        MyPoint mp1 = new MyPoint();
        mp1.setX(-10);
        mp1.setY(150);
        int ppx = mp1.getX();
        int ppy = mp1.getY();
        System.out.println("x座標=" + ppx + " y座標" + ppy + " の数値となっています。");
        
        BufferedReader br =
        new BufferedReader(new InputStreamReader(System.in));
        
        System.out.println("X座標と y座標の数値を入力して下さい。(0~100)");
        
        String str1 = br.readLine();
        String str2 = br.readLine();
        
        int sx = Integer.parseInt(str1);
        int sy = Integer.parseInt(str2);
        
        MyPoint mp2 = new MyPoint(sx, sy);
        ppx = mp2.getX();
        ppy = mp2.getY();
        System.out.println("x座標=" + ppx + " y座標" + ppy + " の数値となっています。");
    }

}

ただ、クラス変数とか まだまだ活用出来ていません。
理解度 すごく浅め。

今日の教訓
 まだまだ 繰り返しが必要〜

2019年4月9日火曜日

やさしいjava 6版 「クラスの基本 Lesson8」 練習問題 5

やさしいjava 6版
「クラスの基本 Lesson8」 練習問題 5
もう 何回か答えているので 10分くらいで答える事が何とか出来ました。
”public” ”private” ”コンストラクタ”も使用しました。

🌟練習問題 8-5

class MyPoint
{
    private int x;
    private int y;
    
    public MyPoint()
    {
        x = 0;
        y = 0;
        System.out.println("初期設定を行いました。 x=" + x + " y=" + y);
    }
    public void setX(int px)
    {
        x = px;
        System.out.println("x座標を" + x + "にしました。");
    }
    public void setY(int py)
    {
        y = py;
        System.out.println("y座標を" + y + "にしました。");
    }
    public int getX()
    {
        System.out.println("x座標を確認します。");
        return x;
    }
    public int getY()
    {
        System.out.println("y座標を確認します。");
        return y;
    }
    public void show()
    {
        System.out.println("x座標は" + x + " です。 y座標は" + y +" です。");
    }
}

class Sample
{
    public static void main(String[] args)
    {
        MyPoint mp1 = new MyPoint();
        mp1.show();
        mp1.setX(50);
        mp1.setY(25);
        int ppx = mp1.getX();
        int ppy = mp1.getY();
        System.out.println("サンプルを調べました。 x=" + ppx + " y=" + ppy);
        mp1.show();
    }

}

ただ、オブジェクト・フィールド・メソッド など
全く専門用語を覚えていません。
はてはて。。。
それに、やさしいjava 7版と言う新刊も出ていました。
java11に対応しているとの事。
購入せねば。。。

今日の教訓
 基礎が 出来ておりません。。。

2019年4月8日月曜日

Math.random()の意味。

「Java入門教室」での独学。

乱数 Math.random()の意味。
そうか、Math.randomは Doubleで小数点の乱数を発生していたんだ!!
今まで丸覚えで
int num = (int)(Math.random()*6)+1;   //サイコロ
と覚えていたんだけど、
これは(int)の型に変更した キャスト演算子(と言うらしい)だったんだね。
よく計算で を割り算を a*b/(double)2 で型変換をするんだけど、
それと同じだったんだね。

よー分かった。

今日の教訓
 何事にも理由がある。

2019年4月7日日曜日

「Java入門教室」

3分の1 程度は読みました。
今まで プログラムを書いていた内容が
ほとんどだったので
フムフムと読み直す感じでした。
他の言語との 比較もあり、
今までと違う発見がありました。
そんな感じ。

今日の教訓
 色々な本を繰り返し勉強しよう。

2019年4月6日土曜日

「Java入門教室」

「Java入門教室」を購入しました。

今までお世話になった「やさしいJava(著者 高橋麻奈)」もたくさん パソで
Javaを動かしました。

この本を 本屋さんで立ち読みをして、
購入したいなって思った理由。

guiアプリケーションの記述が豊富なこと。
色々試してみよう。

今日の教訓
 繰り返し大切。

2019年4月5日金曜日

久しぶりの投稿 (あきらめました Ruby)

今、手元にあるプログラミングの参考書は、
「やさしいJava」(著者 高橋麻奈)
Ruby 諦めました。

Javaを勉強中。
だって、Rubyより文法がしっかりしていて、
丸覚えしやすいんだもん。。。
(ただし、記述量が3倍だ)

⭐️今日作ったプログラム。(とりあえずのFizzBuzz)

class Sample
{
    public static void main(String[] args)
    {
        System.out.println("100までのFizzBuzzを開始します。");
        int score = 0; // 合計用
        
        for(int i=0; i<=9; i++) {
            for(int j=1; j<=10; j++) {
                score = (i*10)+j;
                if((score % 3)==0 && (score % 5) == 0) {
                    System.out.print("FizBuz" + "\t");
                }
                else if((score % 3) == 0) {
                    System.out.print("Fizz" + "\t");
                }
                else if((score % 5) == 0) {
                    System.out.print("Buzz" + "\t");
                }
                else {
                    System.out.print(score + "\t");
                }
                
            }
            System.out.print("\n");
        }
    }
}

今日の教訓
 まるっきり 諦めなければそれで良し。