アフィリエイト広告を利用しています


スキル無しのシステムインストラクターから、システムエンジニアへの転身日記。
◇◆◇ 2013年取得資格
LPICレベル1
LPICレベル2
LPICレベル3 Core
LPICレベル3 Speciality 302
LPICレベル3 Speciality 303
LPICレベル3 Speciality 304

Cisco CCENT
Cisco CCNA

Java SE 7 Silver
Java SE 7 GOLD

OSS-DB Silver

◇◆◇ 2014年取得資格
HTML5 Professional レベル1

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

JavaEEの前に復習をしてみる その8 2次元配列

勇者さんの道具箱は10個まででも良いとして、
街の商人さんの道具箱は100個くらいは入ってほしいです。
商人さんも、100個入れられる道具箱を作りましょう。

String[] toolbox = new String[100];

できたー!!
でも、この道具箱使いづらくないか?
[薬草|薬草|薬草|薬草|毒消草|毒消草|毒消草|毒消草|毒消草|毒消草|聖水|聖水|薬草|薬草|・・・・・・]
横一列に100個仕切りがあるのです。
凄い横長の店舗を構えなければなりませんし。一つの仕切りが30cmだったとしても、
一番端から端まで30mはあります。

えーと、聖水どこにあったっけ・・・。
あれ、薬草がこんなところにもあった!げ、消費期限きれてる!!
まんげつ草?あったかな、げ、一番端だ!お客様、しばらくお待ちください・・・!!

道具屋さんの道具箱は整理整頓できる棚のようなものがいいですね。
たとえば、10×10のカラーボックスのようなものに、
一番上は薬草、2段目は毒消し草としたらどうでしょう。
先ほどよりは、わかりやすいですね。

では、商人さんのために作っていきます。
前回の応用で、配列を2次元配列に置き換えます。
書き方は結構シンプルで、

String[][] toolbox = new String[10][10];

これだけ。[]が一個増えただけです。

0[0|1|2|3|4|5|6|7|8|9]
1[0|1|2|3|4|5|6|7|8|9]
2[0|1|2|3|4|5|6|7|8|9]
3[0|1|2|3|4|5|6|7|8|9]
4[0|1|2|3|4|5|6|7|8|9]
5[0|1|2|3|4|5|6|7|8|9]
6[0|1|2|3|4|5|6|7|8|9]
7[0|1|2|3|4|5|6|7|8|9]
8[0|1|2|3|4|5|6|7|8|9]
9[0|1|2|3|4|5|6|7|8|9]  商人

こんな大きな棚ができてしまいました。
急に立派になりました。商人さん、上の段まで手が届きませんww

if文を使えばもっとシンプルに書けますが、わかりやすくするため、
それぞれをfor文で処理してみました。

package test;

public class Tools2 {
public static void main (String [] args){
int yakusou = 5;
int dokukeshi = 3;
int seisui = 8;

String[][] toolbox = new String[10][10];

for (int i=0; i < yakusou; i++){
toolbox[0][i] = "薬草" +i+" " ;
}

for (int i=0; i < dokukeshi; i++){
toolbox[1][i] = "毒消草" +i+" " ;
}

for (int i=0; i < seisui; i++){
toolbox[2][i] = "聖水" +i+" " ;
}

for (int i=0; i < toolbox. length; i++){
for (int j=0; j <= 9; j++){
System. out .print(toolbox[i][j]+" " );
}
System. out .println("" );
}
}
}


結果は、

薬草0 薬草1 薬草2 薬草3 薬草4 null null null null null
毒消草0 毒消草1 毒消草2 null null null null null null null
聖水0 聖水1 聖水2 聖水3 聖水4 聖水5 聖水6 聖水7 null null
null null null null null null null null null null
null null null null null null null null null null
null null null null null null null null null null
null null null null null null null null null null
null null null null null null null null null null
null null null null null null null null null null
null null null null null null null null null null


これで整理整頓できました。よく使うものは下の段から入れてよ。
と商人さんから文句を言われたのは言うまでもありません。

JavaEEの前に復習をしてみる その7 配列とfor文

私が、Javaの勉強を始めた時は、何かとRPGの処理に例える。
といった感じで遊びの中で学習していきました。
Java SE Silverの知識をさくっと頭に入れられたのは、
根底にJavaの知識があったからで、資格勉強から始めていたら、
プログラミングは挫折していたでしょう。。。

というわけで、今回は、for文と、配列を使ったプログラム。

道具屋で、薬草を10個買います。
そして、その薬草を道具箱にしまっていく。というイメージ。

String toolbox1 = "薬草0";
String toolbox2 = "薬草1";
String toolbox3 = "薬草2";
String toolbox4 = "役僧3";





とかやっていると、10くらいは頑張れますが、誤字脱字や、
やたらtoolboxが増えて、道具一個しか走らない道具箱10個を抱えて
勇者は冒険に旅立ちます。箱10個引きずった勇者は、かっこよくないですねw

【イメージ図】勇者_[1][1][1][1][1][1][1][1][1][1]

箱を一つにするには、配列という方法ですっきりさせます。

String[] toolbox = new String[10];

上記のように書くことで、文字列型のtoolboxに0から10個の配列を与えます。
一個の箱に、10個入るよう仕切りを付けたような形ですね。
[0|1|2|3|4|5|6|7|8|9]
左から2個目に薬草を入れるのであれば、

toolbox[1] = "薬草";

これでOKです。

よし、10個入る道具箱ができたぞ!
それでは、10個薬草をしまっていくか・・・

toolbox[0] = "薬草";
toolbox[1] = "薬草";
toolbox[2] = "役僧";



ちょっと待った!!変わってないじゃないかww
道具箱にポンっと置いたら自動的に10個並べたい。

そういう時は、for文で処理させましょう。

for (int i=0; i < toolbox. length; i++){
toolbox[i] = "薬草" +i;
}

ここで言う iは、10回処理させるため専用の変数。
toolbox. lengthは、toolbox自体の宣言した値の最大値。
i++は、for文が一回回ったら、iに1ずつ加算される。
これで10回まわります。
そして、for文の中にはtoolbox[i]に薬草+iが代入される処理が含まれているので、
1回for文が回るごとに、toolboxのそれぞれの領域に、薬草がしまわれている。

プログラムは、これだけ。


package test;

public class Tools {
public static void main (String [] args){
String[] toolbox = new String[10];

for (int i=0; i < toolbox. length; i++){
toolbox[i] = "薬草" +i;
System. out .println(toolbox[i]);

}
}
}



結果。
わかりやすくするため、薬草に番号を付けてその場で出力もさせちゃう。

薬草0
薬草1
薬草2
薬草3
薬草4
薬草5
薬草6
薬草7
薬草8
薬草9

これで、ループ文と配列を思い出しました。
まだ、JavaEEにいくには、長いね・・・。

ちなみに、下記がカッコいいと言っているわけではありませんw
【イメージ図】勇者_[0|1|2|3|4|5|6|7|8|9]

JavaEEの前に復習をしてみる その6 キーボード入力とSwitch分岐


今までのコードだと、コードを上から下に流すだけで、
プログラム実行者が操作したりといったことがありませんでした。
せめてキーボードから、何か入力をしたい!

そういうときは、下記を使います。

java.util.Scanner (System. in ).nextInt();

キーボードからの数値を受け付けることができます。
これで、入力された数値に対して、違う動きをさせることが可能です。

合わせてSwitch文を使います。

switch (select){
case 1:System. out.println( "攻撃します。 …誰もいません!" );
break ;
case 2:System. out.println( "防御します。 けど、誰もいません!" );
break ;
case 3:System. out.println ("回復します。 とりあえず、寝ましょうか。" );
break ;
default :System.out .println( "1~3で選んでください。" );
break ;
}

これは、selectという変数の値で、caseに続く値と一致した時に、こういう処理をしなさい。
defaultは、上記に該当しない場合、次の処理をしなさいという意味合いで使っています。

プログラムにしますと、

package test;

/* Rensyu 練習用クラス 
開発者 shade 作成日 1/1 */

public class Rensyu {
public static void main (String [] args){
int hitPoint = new java.util.Random().nextInt(51);
int select ;
String menu = "1.攻撃 / 2.防御 / 3.回復" ;
String name = "Shade" ;
String status= "" ;

if (hitPoint <= 10){
status = "瀕死 " ;
}

System. out .println( "名前:" +status+name);
System. out .println( "HP:" +hitPoint);
System. out .println();
System. out .println(menu);
select = new java.util.Scanner (System. in).nextInt();

switch (select){
case 1:System. out.println ("攻撃します。 …誰もいません!" );
break ;
case 2:System. out.println ("防御します。 けど、誰もいません!" );
break ;
case 3:System. out.println ("回復します。 とりあえず、寝ましょうか。" );
break ;
default :System.out .println ("1~3で選んでください。" );
break ;
}

}
}


結果は1を選ぶと、

名前:瀕死 Shade
HP:2

1.攻撃 / 2.防御 / 3.回復
1
攻撃します。 …誰もいません!

4を選ぶと、

名前:Shade
HP:28

1.攻撃 / 2.防御 / 3.回復
4
1~3で選んでください。

といったようになります。
勿論、正規のプログラムであれば、一つのクラスで処理する内容ではありません。
メニュー用のクラス、キャラクター用のクラスなど処理ごとに分ける必要があります。
これでは、Javaプログラミングではないのです。
とりあえず、コードの書き方に慣れるための練習ということで・・・。

Java SE Silverの試験でも、Switchは出たような。。。

switch (select){
case 1:System. out.println ("攻撃します。 …誰もいません!" );
break ;
case 2:System. out.println ("防御します。 けど、誰もいません!" );
break ;
case 3:System. out.println ("回復します。 とりあえず、寝ましょうか。" );
break ;
default :System.out .println ("1~3で選んでください。" );
break ;
}

たとえば、case3のbreakを書き忘れた場合に、3を選択するとどうでしょう、

回復します。 とりあえず、寝ましょうか。
1~3で選んでください。


上記のように、breakがあるとこまで、次の処理も行ってしまいます。
コードの入力の正確さって大事ですね。

ちなみに、整数以外の文字列が入力された場合は、

名前:Shade
HP:45

1.攻撃 / 2.防御 / 3.回復
あああ
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at test.Rensyu.main( Rensyu.java:22 )


このようにエラーが返されます。これは、selectがint型で宣言されているためです。
回避する方法はあります。ただし、このペースだと、だいぶ先になりそうですw

JavaEEの前に復習をしてみる その5 ランダムとif文を覚えてプログラマー気取り

そして、さっそくちょっとぶっ飛びますので、みなぶっとびカードを1枚使いますw(桃鉄)

ランダム関数を使うと、それとないことが色々できるようになります。
たとえば、乱数を利用しておみくじ作り、乱数を利用してスゴロク。
今までの変数の代入と、乱数さえ利用すれば、Javaっぽさは、まだまだ使えませんが
プログラムとしては、それなりのものになると思います。

以降、インデントの補正はしません。
ちょっと見づらいかもしれませんが、脳内でインデント入れてくださいw
実際は入れています。
そしてEclipseを使ってTabキーを押せば、良い感じのインデントを勝手に考えて入れてくれます。

細かい説明はしませんが(ちょっと本気で忘れてる)、
ランダム関数を使うには、new java.util.Random().nextInt(値)を使います。
下記では、hitPointという変数に0~50の値がランダムで入ります。


package test;

/* Rensyu 練習用クラス 
開発者 shade 作成日 1/1 */

public class Rensyu {
public static void main (String [] args){

int hitPoint = new java.util.Random().nextInt(51);
String name = "Shade" ;

System. out.println("名前:" +name);
System. out.println("HP:" +hitPoint);


}
}


上記の結果は、
名前:Shade
HP:46

となり、HPは、0になることもあれば、50になることもあります。

これにif文を加えてみます。
if文は条件分岐に使います。
上記の例を応用し、HPが10以下になった時は、名前の前に瀕死とつけます。

statusというステータス用の変数を用意します。今は中に瀕死の文字列はありません。
String status= "" ;

if文を用意します。
もし、hitPointが10以下ならば、statusに瀕死 という文字列を代入。
そうでなければ、何も処理はされません。

if (hitPoint <= 10){
status = "瀕死 " ;
}

そして、nameの前にstatusを追記します。
System. out .println("名前:" +status+name);


プログラムは、下記。

package test;

/* Rensyu 練習用クラス 
開発者 shade 作成日 1/1 */

public class Rensyu {
public static void main (String [] args){

int hitPoint = new java.util.Random().nextInt(51);
String name = "Shade" ;
String status= "";

if(hitPoint <= 10){
status = "瀕死 ";
}

System. out.println("名前:" +status+name);
System. out.println("HP:" +hitPoint);


}
}

結果は、hitPointが10以下であれば、

名前:瀕死 Shade
HP:10

といった結果が返ってきます。
11以上であれば、

名前:Shade
HP:11

このように表示がされます。

ランダムとifを使うだけで、プログラムに動きが見えてきます。
ちょっとプログラムをかける気になるから不思議ですね。

JavaEEの前に復習をしてみる その4 変数同士の計算をしてみる。

変数同士の計算を、Javaで行ってみたいと思います。
初歩の初歩から、技術を思い出すために書き連ねていきます。
まだ、Java触ったことのない人は、過去記事のEclipseのインストールから行っていくと、
shadeの独学レベルまでは、たどり着けるかもしれません。そして、そのままGOLDとっちゃってくださいw
でも、めんどくさくなって、どーーん!!と話がぶっ飛ぶことこともお許しくださいw

int型の、num1とnum2を使って計算をします。
int num1 = 5;
int num2 = 6;
と、2つの値を宣言しておきます。
そして、この2つを使って四則演算をします。

まず、加算。

System. out.println ( "num1+num2=" +num1+num2+ "です。" );

これで、どんな結果が返ると思いますか?

5+6だから、11!

ではなくて、

num1+num2=56です。

となります。


これは、初歩的なです。
プログラムに慣れてくれば、当たり前じゃん!という内容なんですけどね。

こう、書くとどうでしょう。

System. out .println ( num1+num2 +"です。" );

これだと、

11です。

となります。

これは、
"num1+num2=" +num1+num2+ "です。"

"num1+num2=" と "です。"が、文字列です。
num1と、num2は数値型です。
文字列と数値は直接足すことができないので、一番左にある文字列が優先され処理されます。
そしてプログラムは左側から優先的に処理されるので、

"num1+num2=" + 5 = "num1+num2=5"
"num1+num2=5" + 6 = "num1+num2=56"
"num1+num2=56" + "です。" = "num1+num2=56です。"

となってしまうわけです。

System. out .println ( num1+num2 +"です。" );
こちらの場合は、一番左が数値型で、次も数値型なので、数値同士の計算が先にされて、
最後に文字列がくっつく形になるので、正しい計算がされ、11と返されるわけです。

num1+num2=11です。と表示したければ、
System. out .println ( "num1+num2=" +(num1+num2)+ "です。" );
と、このように、数値型同士をかっこで括って優先的に処理してしまえばOKです。

実は、こういうのがJava SE Silverの問題に出てきて、結果は以下のうちどれでしょう。
といった感じで、11だったり、56だったりの中から答えを選ばせる問題が出ます。

四則演算をまとめて行うと、

public class Rensyu {
public static void main (String [] args){
int num1 = 5;
int num2 = 6;
System. out.println ( "num1+num2=" +(num1+num2)+"です。" );
System. out.println ( "num1-num2=" +(num1-num2)+"です。" );
System. out.println ( "num1*num2=" +(num1*num2)+"です。" );
System. out.println ( "num1/num2=" +(num1/num2)+"です。" );
}
}


もちろん、実際のプログラムでこんな書き型したら怒られますが、最初なので、こんな感じで。
結果は、

num1+num2=11です。
num1-num2=-1です。
num1*num2=30です。
num1/num2=0です。

と、なります。除算が0と表示されたのは、num1とnum2が整数型だからです。
整数型は小数点以下の数値を表示することはありません。
小数点以下を表示するのであれば、intではなく、float型を使うといいです。
今回も手抜きで書いてしまいますが、

public class Rensyu {
public static void main (String [] args){
float num1 = 5;
float num2 = 6;

System. out .println ( "num1+num2=" +(num1+num2)+ "です。" );
System. out .println ( "num1-num2=" +(num1-num2)+ "です。" );
System. out .println ( "num1*num2=" +(num1*num2)+ "です。" );
System. out .println ( "num1/num2=" +(num1/num2)+ "です。" );
}
}


こうすることで、以下のように表示することができます。

num1+num2=11.0です。
num1-num2=-1.0です。
num1*num2=30.0です。
num1/num2=0.8333333です。

もちろん、除算だけfloatの結果を返すような表記もできます。
しかし、長くなってきてしまったので、それはおいおい普通に書かれていると思いますw

JavaEEの前に復習をしてみる その3 コメントの記述と変数への代入

プログラムの説明として、コメントを入力する際には、以下のように記述する。

/* コメントを入力するには、
スラッシュとアスタリスクで括ると、複数行に至っても
コメントと見なされるのです。*/

//一行だけをコメントアウトするにはスラッシュを二つ続けた後に書く

複数行にわたって書く方法と、書いたコードの説明用にすぐ横に書く2つのパターンがある。
実際のコードだと、こんな感じ。あくまでイメージ。

package test;

/* Rensyu 練習用クラス 
開発者 shade 作成日 1/1 */

public class Rensyu {
  public static void main (String [] args){
    int age=20;//年齢詐称
    System.out.println ( "私の年齢は"+age+"歳です。" );
  }
}

クラスの説明文に複数行書いたり、ageという変数の説明用に使ったりしています。

さらっとコードに書きましたが、ageという変数に20という数字を入れています。
そして、ageの前に int をつけることで、32ビットの整数型に対応した変数として宣言できます。
詳しく書きませんが、文字列を変数に代入したい場合は、intではなく、Stringという変数を使います。

実際にEclipseを使って実行すると、こんな感じです。
Java_Program02.jpg
いつまで続くのこの企画・・・w

JavaEEの前に復習をしてみる その2 プログラムの構造

Javaのプログラムには、クラス、メソッドといった構造がある。
Javaのソースコードは { }  で囲まれていて、
一番外側にクラスブロックというブロックを持ち、
その内側にメソッドブロックを持つ。

ブログはインデントが効かないので、スペースを代用します。

public class Rensyu { ←クラスブロックの開始
  public static void main ( String [] args ) { ←メソッドブロックの開始
    System.out.println ( "こういう文法すらすぐ出てこない危機感" );
  } ←メソッドブロックの終了
} ←クラスメソッドの終了

基本的には、メソッドブロックの中に、コードを書いていく感じです。
ここでは、Rensyuクラスのメインメソッドに、
こういう文法すらすぐ出てこない危機感
というメッセージを出力しなさい。という何でもないコード。
実行すれば、コンソールに出力されます。

Eclipseだとこんな感じです。
Java_Program01.jpg

これが基本文法なので、初めの一歩として、わーい、うごいた!というやつですね。


Javaに限らず、プログラムには作法があるので、クラス名の頭は大文字にするとか、
インデントを開けることで、プログラムを見やすくするとか、多数のお約束ごとがあるので、
そういうのも覚えなければいけないのです。

JavaEEの前に復習をしてみる その1 コードの入力から、実行までの流れ

Javaをやりだして、一通り基礎を学習し、JavaEEにまで踏み込んだ半年前。
しかし、その後がっつりインフラ業務に置き換わり、知識をほぼ失念。
よって、基礎の基礎からもう一度復習していこうと思う。。。

とりあえず、自分用のメモみたいな感じなので、あまり有用ではないかもしれない。
Javas SE GOLD所持者が、まさか、ここからとはwww


◇コードの入力から、実行までの流れ。

ソースコードの作成

コンパイル

実行

ソースコードの作成
Eclipse等を使い、javaが定める文法にしたがってコンピュータへの命令を記述。

コンパイル
バイトコードへの変換。もしコードに誤りがあれば、コンパイルは失敗し、失敗した箇所が表示される。

実行
インタプリタに対してバイトコードの実行を指示する。
インタプリタのJVMによってマシン語に変換されて、CPUに処理が送られる。


こういったことを意識してコードを書くことは、あまりないですけどね。
とにかく初歩の初歩ということで、再確認。
コードはコンパイラとインタプリタによって変換されてから実行される。ということ。

こんな初歩から始めたら、EEまでたどり着くのにどれだけかかるのかww

jQueryってご存知ですか?

最近のブログやホームページってデザインがきれいなだけじゃなく、
ページに表示されているアイテムをマウスで動かせたり、
クリックした場所が光ったり、プルダウンでメニューが表示されたり、
動的な仕掛けづくりが大変そう・・・と、Javaのサーブレット的な動きを創造してしまいますが、
実は、コピペで作れちゃうものばかりだったりします。

そこで使われている技術が「jQuery」というもので、
javaScriptを簡単に扱うためのライブラリで、CSSに似た記述方式が採用されていて、
javaScriptの知識がないデザイナーでも扱いやすい設計となっています。

jQueryの基本構文は、

$(セレクタ).メソッド(パラメータ);

となっています。
???ですよね。

たとえば、文字サイズを15pxにしたい場合は、こう書きます。

$('p').css({font size:'15px'});

上記を単体で書くなら、CSS覚えたほうが簡単じゃん。といった感じですよね。

要素の定義もできるので、

var hoge=$('#content');
hoge.css({font size:'15px'});
hoge.text('Hello');

と入力することで、hogeという要素を使ったものは15pxで統一されるわけですね。

いや、これもCSSのような例になってしまったw
構文としてはこんな感じというところにとどめたかったのです。

あと、Jqueryを使うにはjQueryのサイトからJSファイルを取得して、
webサービスのスペースに保存しておく必要があります。
または、CDNを利用してコードをページに張り付けるだけという方法もあります。

導入としては、これだけ。構文の理解と、jsファイル対策。
すぐに始められます。jQuery自体はサンプルが豊富なので、技術を拝借して、
自分のやりたいことができるようにコードをカスタマイズするところから始めるといいと思います。

【Java SE 7試験対策】1z0-804 Java SE 7 Gold 参考書を立ち読みしてきました。

こんばんは。

大きい本屋に行く機会がありましたので、さらっと立ち読みしてきました。

オラクル認定資格教科書 Javaプログラマ Gold SE 7 (EXAMPRESS)

新品価格
¥4,410から
(2013/12/8 16:34時点)




厚みはそこそこありましたね。
私の場合、どこをどの程度勉強したらいいのかわからなかったので、
あるのとないのとでは、だいぶ違うだろうなと思います。

1章ごとに、章末問題があり、出題範囲の項目も解説がなされています。
それでも、結構あっさり目ではあるので、Silverの試験内容を理解、プログラムの実務経験が
ないと、合格は難しいように感じました。

まず、この参考書を全体的に読み、技術の理解をする。
その後、問題をEclipseなどを使って、実際にプログラムとして書き写し、
実行結果を自分の目で見てみる。

Javaの試験は何度も言ってますが、間違い探しです。
問題のプログラムに使われている技術を理解している。出力されるだろう結果を導き出す。
構文を隅々とチェックし、穴がないかを調べる。

そのためには、問題を何度も何度も解いて練習して、要点を掴めるようにしましょう。

さらっとしか見ていませんが、模擬問題は、試験ズバリ!!という感じではなかったと思いますが、実際に出題されていそうな長文問題などもありましたので、いい練習になります。

私は文字列処理系の知識をあっさり目に勉強してしまったのですが、
問題の各所に多数出題されたので、しっかり目に学習しておくことをお勧めします。

すいません、買ってはいないので、この辺ですかね。
受験者の皆さん、頑張ってください。私も、Java EE頑張りませんと。
<< 前へ     >>次へ
×

この広告は30日以上新しい記事の更新がないブログに表示されております。