---
# System prepended metadata

title: Untitled

---

WeAreJk

T320008、石川恭雅
T320033、久保友悟
T320098、宮川裕貴

**********
5.17 フィボナッチ数列の各項を、第 1 項から第 20 項まで求めて出力するプログラムを作成せよ。フィボナッチ数 列とは、
a1 =1,a2 =1,an=an−1+an−2 (n>2) で与えられる数列である。なお、このプログラムは配列を使わずに実現できるので、配列を使用しないこと。
 ・プログラム
public class p17 {
    public static void main(String[] args) {
        int m = 1, n = 1;
        System.out.println("a1=" + m);
        System.out.println("a2=" + n);
        for (int i = 3; i <= 20; i++) {
            System.out.printf("a%d=%d\n", i, m + n);
            int l = m + n;
            n = m;
            m = l;
        }
    }
}
・出力結果
% java p17
a1=1
a2=1
a3=2
a4=3
a5=5
a6=8
a7=13
a8=21
a9=34
a10=55
a11=89
a12=144
a13=233
a14=377
a15=610
a16=987
a17=1597
a18=2584
a19=4181
a20=6765
**********

**********
6.3 MethodSample2.java のような、static な isEven メソッドを利用するプログラムがある。isEven( )は整数が 偶数であるかどうかをチェックするメソッドである。以下の実行結果になるように isEven メソッドの定義を 追加せよ。
実行結果
2 は偶数です 4 は偶数です 6 は偶数です 8 は偶数です 10 は偶数です
・プログラム
public class MethodSample2Ensyuu {
    static boolean isEven(int a) {
        if (a % 2 == 0) {
            return true;
        } else
        {
            return false;
        }
    }
public static void main(String[] args) {
        int nums[] = {1,2,3,4,5,6,7,8,9,10};
        for (int n:nums) {
            if(isEven(n)) System.out.println(n+"は偶数です。");
        }
    }
}
・出力結果
% java MethodSample2Ensyuu
2は偶数です。
4は偶数です。
6は偶数です。
8は偶数です。
**********

**********
演習課題（6.6)
MaxSample.java は、staticなmaximum ( メソッド を利用するプログラムである。 maximum ( は渡された 1 次元配列 の要素の最大値を求め、それを返すメソッドである。 MaxSample クラス 内で main ( メソッド が記述されているが、maximum(メソッドの定義は抜けている。 maximum ( メソッドの定義を 追加し、プログラムを完成せよ。

プログラム
public class MaxSanple {
	public static int maxnum(int a[]){
		int i,max;
		max = a[0];
		for(i=0;i<a.length;i++){
			if(max<a[i]){
				max = a[i];
			}
		}
		return max;

	}
	public static void main(String[] args) {
		int a[] = {10,20,50,15,5,40,30};
		int b[] = {-10,-20,-50,-15,-5,-40,-35,-60};
		System.out.println(maxnum(a));
		System.out.println(maxnum(b));
	}
}

実行結果
50
-5

**********

**********
演習課題（6.9）
Block
クラス は長方形の幅、高 さ や面積を現す 3 つフィールド x, y , area 及び 3つのメソッド を持っている。 void 型の setBlock( ) メソッドは、長方形の幅と高さを設定し、面積を計算し、 それ を area に代入する。 sameBlock( ) と sameArea( )メソッドは Block クラスオブジェクト を受け取って、長方形の比較を行う。sameBlock( ) は 長方形の次元 を比較し、一致したときに true 、そうでないときに false を返す。 sameArea( ) は長方形の面積を比較し、一致した場合、 true 、そうでないときは false を返す。 Block クラスの sameBlock( ) は記述されているが、 setBlock( ) 及び sameArea( ) の記述は抜けている。 setBlock( ) 及びsameArea( の定義を追加し、動作を確認せよ。

プログラム
class Block{
	int x, y; //長方形の幅と高さを格納するフィールド
	int area; //長方形の面積を格納するフィールド
	// ここで setBlock( )メソッドの定義を追加
	void setBlock(int nx, int ny) {
		x = nx;
		y = ny;
		area = x*y;
	}
	boolean sameBlock(Block obj) {
		if( (obj.x == x) && (obj.y == y) )return true;
		else return false;
		//この文は次のように省略できる。
		// return (obj.x == x) && (obj.y == y);
	}
	// ここで sameArea( )メソッドの定義を追加
	boolean sameArea(Block obj) {
		return (obj.area == area);
	}

}
public class BlockSample {
	public static void main(String args[]){
		Block obj1 = new Block( );
		Block obj2 = new Block( );
		obj1.setBlock(4,6);
		obj2.setBlock(8,3);
		System.out.println("obj1 は obj2 と一致する：" + obj1.sameBlock(obj2));
		//obj1.sameBlock(obj2)は obj1 と obj2 のサイズを比べる
		//obj2.sameBlock(obj1)のように書いても良い
		System.out.println("obj1 は obj2 と同じ面積を持つ：" + obj1.sameArea(obj2));
		//obj1.sameArea(obj2)は obj1 と obj2 の面積を比べる
		//obj2.sameArea(obj1) のように書いても良い
	}
}

実行結果
$ javac BlockSample.java && java BlockSample
obj1 は obj2 と一致する：false
obj1 は obj2 と同じ面積を持つ：true

********
**********
6.17 check(int a, int … n)メソッドを持つプログラムを作成する。check は、a の値が可変引数の合計値を上回るときに true、そうではないときに false を表示するメソッドである。 

プログラム
public class enshu6_17 {
	static boolean check(int a, int ... n){
		int x = 0;
		for(int i: n){
			x += i;
		}
		return a > x;
	}
	public static void main(String args[]) {
		System.out.println(check(10,1,1,1));
		System.out.println(check(10,10,10,10));
	}
}

出力結果
$ javac enshu6_17.java && java enshu6_17
true
false

**********
6.21 コマンドライン引数として利用者に任意の数の整数を入力させ、それらの和を出力するプログラムを作成せよ。（ テストデータ１： 15 16 200 300 テストデータ 2： 2 3 50 40 5 10）

プログラム
public class enshu6_21 {
	public static void main(String args[]) {
		int ans = 0;
		for (String s : args) {
			int arg = Integer.parseInt(s);
			ans += arg;
		}
		System.out.println(ans);
	}
}

出力結果
$ javac enshu6_21.java && java enshu6_21 15 16 200 300
531

$ javac enshu6_21.java && java enshu6_21 2 3 50 40 5 10
110

**********