学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Java | 23 | コンストラクタの応用

↓↓クリックして頂けると励みになります。



22 | コンストラクタ】 << 【ホーム】 >> 【24 | クラス分割



コンストラクタを作成、利用するプログラム
コンストラクタを作成、利用するプログラム



前のセッションで学んだコンストラクタを応用したJavaプログラムを作成して理解を深めます。



Visual Studio Codeで以下の2つのプログラム「Panda.java」「PandaTest.java」を作成します。


新規作成1 【Panda.java】

public class Panda {

	public String name;
	public int bornYear;
	public boolean isAlive;
}

新規作成2 【PandaTest.java】

import java.util.Calendar;

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

		Panda p1 = new Panda();
		p1.name = "ファンファン";
		p1.bornYear = 1995;
		p1.isAlive = true;

		Panda p2 = new Panda();
		p2.name = "ミンミン";
	       	p2.bornYear = 1990;
	        p2.isAlive = false;

		printPanda( p1 );
		printPanda( p2 );
	}
    
	public static void printPanda( Panda p ) {

		String info = "名前:" + p.name + ",";
		Calendar cal = Calendar.getInstance();
		int thisYear = cal.get( Calendar.YEAR );
		
		if( p.isAlive == true ) {
			info += "年齢:" + (thisYear - p.bornYear);
		}
		else {
			info += "生存していません";
		}
		System.out.println( info );
	}
}



「Panda.java」は、String型、int型、boolean型の3つのフィールドを宣言しています。


「PandaTest.java」の内容を見てみましょう。

import java.util.Calendar;

java.utilパッケージのCalenderクラスをインポートしています。

Panda p1 = new Panda();

Pandaクラスのインスタンスを作成しています。

p1.name = "ファンファン";
p1.bornYear = 1995;
p1.isAlive = true;

Pandaのフィールドにそれぞれ値を代入しています。
isAliveは、boolean型なので、trueかfalseを入れています。


printPandaメソッドを見てください。

Calendar cal = Calendar.getInstance()

最初にインポートしたCalendarクラスのgetInstance()メソッドを使ってインスタンスを取得しています。
Calendarクラスの機能を使うにはまず、getInstance()メソッドを使ってカレンダー(インスタンス)を取得しなければなりません。
Calendarクラスにはコンストラクタ(クラスと同じ名前のメソッド)が無いからです。

int thisYear = cal.get( Calendar.YEAR );

Calendarクラスにはstaticなフィールドがいくつか用意されています。
使うときはstaticなのでインスタンスの生成は必要ありませんから、( Calendar.YEAR )などとして使うことができます。
Calendar.YEARは、年を表す定数です。
get()メソッドは引数で与えられたものをint型で返してくれます。


出力結果です。
「Panda.java」「PandaTest.java」の2つをコンパイルして、「PandaTest.java」を実行します。

~/Desktop/Programming/JP $ javac Panda.java 
~/Desktop/Programming/JP $ javac PandaTest.java

~/Desktop/Programming/JP $ java PandaTest     
名前:ファンファン,年齢:29
名前:ミンミン,生存していません



Visual Studio Codeで以下の2つのプログラム「Shokudou.java」「ShokudouTest.java」を作成します。


新規作成1 【Shokudou.java】

public class Shokudou {

	public String name;
	
	public int price;

	public boolean canUse;

	public Shokudou( String s, int p, boolean c ) {

		name = s;

		price = p;

		canUse = c;

	}
}

新規作成2 【ShokudouTest.java】

public class ShokudouTest {

	public static void main( String[] args ) {
		Shokudou[] t = { 
				new Shokudou( "A定食",470,true ),
				new Shokudou( "B定食", 470, false ),
				new Shokudou( "ビーフカレー", 370, false ),
				new Shokudou( "PP弁当", 350, true ),
				new Shokudou( "野菜弁当", 300, true ),
				};

		System.out.println( "合計金額:" + totalUsefulPrice( t ) );
	}
	public static int totalUsefulPrice( Shokudou[] t ) {

		int sum = 0;
		for( int i=0; i<t.length; i++ ) {
			if( t[i].canUse ) {
				int sumt = t[i].price;
				sum = sum + sumt;
			}
		}
		return sum;
	}
}



今までの確認も含めてこのプログラムを載せました。
「Shokudou.java」と「ShokudouTest.java」の2つをコンパイルして、「ShokudouTest.java」を実行します。

~/Desktop/Programming/JP $ javac Shokudou.java 
~/Desktop/Programming/JP $ javac ShokudouTest.java
 
~/Desktop/Programming/JP $ java ShokudouTest     
合計金額:1120



22 | コンストラクタ】 << 【ホーム】 >> 【24 | クラス分割





↓↓クリックして頂けると励みになります。

YAE C5 CLINIC(札幌美容クリニック)

関連記事(外部サイト)