ここでは、「変数の宣言」・「printf」・「for文」を学習する。
変数の宣言
データ型 変数名 = <初期値>;
SAMPLE-CODE
public class ex1 {
public static void main (String[] args){
//変数の宣言
int point = 100;
String name = "XX";
//文字列の結合
System.out.print( name + point );
}
}
コード解説
変数の宣言である。4行目ではint型の変数pointを宣言し、初期値として100を代入している。
5行目ではString型の変数nameを宣言し、初期値として”XX”を代入している。
変数は箱のイメージで、自由に入力(上書きや四則演算)・出力が可能になる。
合格への道
全商プロにおいて、変数の宣言を聞かれる問題は存在しない。しかし、プログラムの主となる構成要素である変数を利用しないソースコードも存在しない。
この変数の宣言を知っていることで、「どの変数を利用しているのか」や「このデータ型は当てはまらないな(printfなどで活用可)」など、問題攻略へ繋がっていくので、覚えることを奨めたい。
printf
System.out.printf(書式, 引数1, 引数2, 引数3…);
SAMPLE-CODE
public class ex2 {
public static void main(String args[]){
int price = 100;
int quantity = 3;
int total = price * quantity;
String name = "XXチキン";
System.out.printf("%sのご購入ありがとうございます:金額:%d×%d=%d",name,price,quantity,total);
}
}
コード解説
printfの利用である。これは書式指定子(フォーマット指定子)+データ型で、変数を代入する箇所を宣言する。
javaにおいて、書式指定子は「%」であるから「%」の箇所に変数が代入されていくことになる。
該当する変数は、書式の次以降に記載される「引数1~」に記載されていく。
引数1は最初の%~に代入され、引数2は2番目の%~に代入される。
%~の~はデータ型が当てはまり、下表の通りである。
特に赤字はよく利用される。余裕があればf(小数)も覚えておくと良い。
合格への道
printf関数の引数を記入させる問題は頻出問題と言っても良い。このprintf関数の%d,%f,%sと、引数の1番目と%の1番目は同じ(そこに代入される)ことを知っていれば、ここには文字型(%s)であるから「数値型の変数はあり得ないな」と思考出来るようになる。
この思考が出来るようになれば、情報量の少ない書式であってもデータ型を絞ることが可能になる。
for文
for(初期化式;条件式;増減式){ }
SAMPLE-CODE
public class ex3 {
public static void main(String[] args) {
for (int j = 1; j <= 9; j++) {
System.out.println();
for (int k = 1; k <= 9; k++) {
System.out.print(j * k + "\t");
}
}
}
}
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
コード解説
for文を利用した九九の表示プログラムである。
外のfor文(変数j)が1の時に中のfor文(変数k)は1から9まで増加する。
for文の実行順序は次の通りで、この性質をインサーションソートなどに応用している。
初期化式を考慮しなければ、必ず最初に条件式でfor文内の条件を満たすかどうかを確認し、満たす場合は中の条件に移動し、最後に増減式が実行される。
合格への道
全商Javaにおいて、for文は必ず出題される。利用用途は多岐にわたり、ソートや順位付けのアルゴリズムは勿論、データの集計などにも利用されるから、必ず「どの場所に何が来るのか」は把握しておくべきだし、余裕があればfor文の実行順序も覚えておくと良い。
for文に限る話ではないが、条件は複数個設定することが出来る。例えば、「所持金が1000円以上」と「ある商品の在庫が10個以下である」の2つの条件を満たす場合は、新たに購入すると言った時、1つの条件式欄に1つの条件式しか書けないと不便である。
このような条件を結合する役割を担うのが論理演算子である。
論理演算子は3つ存在しており、特に上2つは重要である。
public class ex4 {
public static void main(String[] args) {
int a = 10;
int b = 10;
int c = 0;
//論理和
for (int i = 1; i <= a || c <= b; i++) {
c += i;
}
System.out.println("論理和" + c);
//論理積
c = 0;
for (int i = 1; i <= a && c <= b; i++) {
c += i;
}
System.out.println("論理積" + c);
}
}
それぞれの出力結果を予想出来るだろうか。
論理積15
論理和の方は、一方が偽になっても、もう一方が真ならばずっと内部の処理を実行する。
今回の例で言えば、2番目の条件式「c<= b 」は6回目に偽となるが、1番目の条件式「 i <= a 」は6回目時点でも、勿論真であるから、1から10までを加算した55という出力結果が返ってくる。
逆に論理積は、両方が真であり続ける必要がある。
for文自体の中身は変わらない訳だから、2番目の条件式が6回目に偽となり、for文の処理が終了する。これによって1から5までを加算した15が出力される。
論理演算子を記述させたり、条件文の中に入っている問題は、何回か出題されている。
論理演算子1つ覚えているだけで、得点が上がる可能性があるので、きちんと把握すると良い。