備忘録1の続きになります。
配列の作成
配列を利用するための最初の手順は配列を宣言すること。
宣言の仕方には、以下の2種類がある。
①データ型 + 配列変数名 + []
②データ型 + [] + 配列変数名
データ型は,プログラム内で扱うデータの種類のこと
(Railsだとデータベース設計する時に決まるカラムの型が近いかな?)
複数の文字列を格納する時はString型を使う。
char型は1文字しか格納出来ない。
数値のデータ型はbyte、short、int、longがある。
小さい数値の場合でも int 型を使用した方が処理が高速に行えることから整数を扱う場合は基本的に int 型を使う。整数で変数を作成する時もint型を使う。
配列の最初のインデックスは1ではなくて0から始まる。(これもRubyと一緒)
配列への代入の書き方はいろいろあるが下記が一番分かりやすい
// 宣言と代入を同時に行う書き方
int nums[] = {1,2,3,4,5};
配列から特定の値を取り出す時は[]でインデックス番号を指定して出力する
public static void main(String[] args) {
int nums[] = {1,2,3,4,5};
System.out.println(nums[1]);
}
for分とは
定められた回数だけ同じ処理を繰り返したいときに使う。
fizz buzzのような「1〜100まで出力せよ!」みたいな命令に使われることが多い。
通常のfor文と拡張for文の二種類ある
for(初期化式; 条件式; 変化式){
実行する処理
}
for (型 変数名: 配列名もしくはコレクション名){
実行する処理
}
※コレクションとは配列のように複数の要素を管理できるオブジェクトの事
拡張for文をつかったほうが記述内容がシンプルでコーディングもしやすく、可読性も優れている。
for分で配列の取り出し方
String name[] = {"Suzuki", "Katou", "Yamada"};
for (String str: name){
System.out.println(str);
}
int age[] = {25,30,40};
for (int str: age){
System.out.println(str);
}
サンプル1の記述内容
1)配列から要素を取り出し変数 str に格納する(str="Suzuki")
2)ブロック内の処理を実行(画面に変数 str の値を「System.out.println」で出力)
3)繰り返しの1回目終了
4)配列から要素を取り出し変数 str に格納する(str="Katou")
5)ブロック内の処理を実行(画面に変数 str の値を出力)
6)繰り返しの2回目終了
7)配列から要素を取り出し変数 str に格納する(str="Yamada")
8)ブロック内の処理を実行(画面に変数 str の値を出力)
9)繰り返しの3回目終了
10)配列から要素をすべて取り出したので繰り返しを終了
if分
考え方はRubyと同じ。
条件式がtrue だった場合は { から } のブロック内に記述された処理を上から順番に実行。条件式が false の場合はブロック内の処理は何も行わずに if 文の次の処理へ進む。
【主な比較演算子】(aとbは数値型変数)
「a == b」...aとbが等いときはtrue、それ以外はfalseを返す
「a > b」...aがbよりも大きいときはtrue、それ以外はfalseを返す
「a < b」...aがbよりも小さいときはtrue、それ以外はfalseを返す
if(a == b){
System.out.println("aとbの値は" + a + "です。");
}
if文はelseやand・or・notと組み合わせて、条件を分岐させることも可能。
if (条件式1){
// 条件式1が true のときに実行される処理
...
}else if (条件式2){
// 条件式2が true のときに実行される処理
...
}else if (条件式3){
// 条件式3が true のときに実行される処理
...
}else{
// すべての条件式が false のときに実行される処理
...
}
今回の課題のメインの部分(for分とif分の組み合わせ)
1、文字列と数値を格納する配列を一つずつ作る
2、文字列の配列に対してfor分を使って繰り返し処理を行う
3、特定の文字の際には指定した数字を出力する
package sample;
public class Sample {
public static void main(String[] args) {
String names[] = {"Suzuki", "Katou", "Yamada"};
int age[] = {25,30,40};
for (String name: names){
if (name == "Suzuki") {
System.out.println(age[0]);
}
else if (name == "Katou") {
System.out.println(age[1]);
}
else if (name == "Yamada") {
System.out.println(age[2]);
}
}
}
}
25
30
40
気づき
・重複したローカル変数は使えない(「String name: name」のような記述だとエラーになる)
・if分で{}や;の数が合っていないとエラーになる(トークン "else" に構文エラーがあります。このトークンを削除してくださいというエラー分が出てきた)
・トークンの意味は二つ
1、文の中の単語や記号、数値などの事
2、データの正当性を証明したり、正しく処理が行われているかどうかを証明するためのデータ(主に文字列)の事
・if分に波括弧を付けなくてもfor分のブロック内に書かれていれば処理はできる。
for (String name: names) {
if (name == "Suzuki")
System.out.println(age[0]);
else if (name == "Katou")
System.out.println(age[1]);
else if (name == "Yamada")
System.out.println(age[2]);
}
・やはりエラー分は間違っている箇所を教えてくれるので頼りになる。
以上になります。