回顧大学--大一JAVA実験--実験五種類の実例化と方法呼び出し

5329 ワード

実験の目的
1.クラスの定義、オブジェクトの作成、クラスとオブジェクトの使用を把握します.
2.クラスおよびメンバーの修飾子の使用を把握します.
3.コンストラクション関数の使用を把握します.
4.メソッドと呼び出しメソッドの定義方法を把握します.
5.形式パラメータと実際のパラメータの結合過程を把握する.
実験内容
1.アプリケーションプログラムを作成します.JAvaは、日付クラスを確立し、ユーザーが入力した年、月、日を受け入れ、完了日を数日増やして新しい日付を得、日付を数日前に押して新しい日付を得、日付と日の期間が何日異なるかの計算を行う.
2.宝くじ当選シミュレーションプログラムを作成し、以下の機能を実現する:6つのふるいを作成し、各ふるいは何個の面(一般的に6-30)をカスタマイズすることができる;6つのふるいを投げて、6つの開賞数値を出す;いくつかの参加者をシミュレートして、賭博を行って、開賞数値に基づいて、推測の成績を与える.
特別ヒント
1.クラスのカスタマイズおよび使用手順:
a)まず、クラス名と同じ名前のファイルを生成します.JAva、クラス名もMyDateでなければなりません.クラス定義で変数とその方法を定義します.
b)そして、mainメソッド(このメソッドは上のファイルに書くことも、ファイルを再生成することもできます.新しく生成されたファイルクラス名はファイル名と同じでなければならないことに注意してください)MyDateクラスのオブジェクトを生成し、2つのステップに分けます.
                   i.             MyDate  date;//アドレスを格納する変数の作成
               ii.             date = new MyDate();//MyDateオブジェクトにストレージスペースを割り当て、そのアドレスをdateに割り当てる
c)オブジェクトを生成すると,dateオブジェクトを利用してMyDateクラス定義のメソッド,例えばdateを呼び出すことができる.dayOfMonth(3);
次の例は、その手順を簡単に説明するだけで、方法は1つしかなく、方法にはコードがありません.
publicclass MyDate{public void dayOfMonth(int month){//コードを追加}public static void main(String[]args){//TODO Auto-generated method stub MyDate date;date=new MyDate();date.dayOfMonth(3);           } }
2.静的メソッドは、オブジェクトではなくクラス名で呼び出すことができるので、静的メソッド定義で非静的メソッドを呼び出すには、まずオブジェクトを作成し、そのオブジェクトを介して非静的メソッドを呼び出す必要があります.例えばmainメソッドは特殊な静的メソッドであり,非静的メソッドを直接呼び出すことはできない.
3.閏年の計算方法:紀元紀年の年数は4で除かれ、100で除かれない場合は閏年または400で除かれる場合は閏年である.例えば2000年は閏年で、1900年はそうではありません.
—————————————————————————————————————————————————————————————————————————————
以下は私のコードはここをダウンロードしますMyDate類はここをダウンロードして宝くじの当選するシミュレーションプログラムをダウンロードします
—————————————————————————————————————————————————————————————————————————————
1、まず最初のMyDateクラスです.
コードはとても长くて、私はアップロードして、ここでダウンロードすることができます
クラスの構造は次の図のとおりです.
MyDateクラスには、年-月-日の3つのプライベート変数があります.
重要な関数の説明:
dayOfMonth(int m):m月に戻って合計何日ありますか.
	public int dayOfMonth(int month) {
		switch (month) {
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			return 31;
		case 4:
		case 6:
		case 9:
		case 11:
			return 30;
		case 2:
			if (year % 4 == 0 && year % 100 != 0)
				return 29;
			else
				return 28;
		}
		System.out.println("error month!");
		return -1;
	}
DaysOfDate(MyDate date):データを返すのは1年1月1日から何日ですか.
	public int daysOfDate(MyDate date)
	{
		int y=date.getYear();
		int m=date.getMonth();
		int d=date.getDay();
		if (y < 1)
			System.out.println("error year!");
		else if (m < 1 || m > 12)
			System.out.println("error month!");
		else if (d < 1 || d > dayOfMonth(m))
			System.out.println("error day!");
		else {
			int difdays=365*(y-1)+((y-1)/4-(y-1)/100+(y-1)/400);
			for(int i=1;i
difOfDate(MyDate date):この日付とdateの差日数を計算します(それぞれ元年元月元日までの日数を利用して差を求める考え方です)
	public int difOfDate(MyDate date)
	{
		int days1=daysOfDate(this);
		int days2=daysOfDate(date);
		return (days1>days2)? days1-days2:days2-days1;
	}
incDay(int d):この日付クラスをd日間追加します.
	public void incDay(int d)
	{
		if(day+d<=dayOfMonth(month))
			day+=d;
		else{
			d-=(dayOfMonth(month)-day)+1;
			day=1;
			if(month+1<=12)
				month++;
			else
			{
				year++;
				month=1;
			}
			incDay(d);
		}
	}
decDay(int d):この日付クラスをd日減らします.
	public void decDay(int d)
	{
		if(day-d>0)
			day-=d;
		else{
			d-=day;
			if(month-1>0)
				month--;
			else
			{
				year--;
				month=12;
			}
			day=dayOfMonth(month);
			decDay(d);
		}
	}
最後にshiyan 5のmainメソッドを用いてMyDateクラスをインスタンス化し,対応するメソッドを呼び出し,実験要件を完了する.
ここでは最初の実験要求のみが完了し,2番目の実験要求は次回ここで更新される.
2つ目の実験:
1.宝くじ当選シミュレーションプログラムを作成し、以下の機能を実現する:6つのふるいを作成し、各ふるいは何個の面をカスタマイズすることができる(一般的に6-30);6つのふるいを投げて、6つの開賞数値を出す;いくつかの参加者をシミュレートして、賭博を行って、開賞数値に基づいて、推測の成績を与える.
—————————————————————————————————————————————————————————————————————————————
次は私のコードです
—————————————————————————————————————————————————————————————————————————————
分析:実験の要求を理解するのも1种の试练ですね.私は今见て、需要の内容がよく分かりませんが、后であなたはもっとはっきりしない需要があることを知っています.これは本当に详しいです.後で取引先にプロジェクトをする時、需要分析はとても重要で困難な部分で、できるだけ理解して、それから疎通して、最後にどのように実現するかを考えなければなりません.
私は自分の理解に基づいて、このように私のコードを実現しました.
まず、フィルタクラス、参加者クラスを作成します.そして総shiyan 5というクラスのmainメソッドは6つのふるい(これは強制的)と3人の参加者(3つは私が定義した)をインスタンス化する.
各ふるいはどれだけの面があるかをカスタマイズすることができて、私は各ふるいの面数を聞いて、ユーザーに入力させて、それから参加者に推測して、最後に結果によって、やっと1つに1点を加えて、最初は0点です.
以下は私のコードの解析で、やはりダウンロードすることができて、私の宝くじの当選のシミュレーションプログラムshiyan 5_をダウンロードします.java
やはり私のクラス図です.
まず、ShaiZiクラスです.
class ShaiZi
{
	private int mian;
	public ShaiZi(int m)
	{
		mian=m;
	}
	public int GetNum()
	{
		return (int) (100*Math.random()%mian+1);
	}
}
次にプレイヤーPlayerクラス:
class Player
{
	int[] guess;
	int score;
	public Player(int mian[])
	{
		score=0;
		guess=new int[6];
		for(int i=0;i<6;i++)
		{
			guess[i]=(int) (100*Math.random()%mian[i]+1);
		}
	}
	public String toString()
	{
		String str=new String("");
		for(int i=0;i<6;i++)
		{
			str+=guess[i]+" ";
		}
		return str;
	}
}
ここではMathを使いました.random()メソッドは、後でテストしてやっとこのメソッドが返す乱数が0-1のものであることを覚えたので、私は勝手に100に乗って、ふるいの面数を型にしました.
mainメソッドは複雑ですが、簡単です.このプログラムは前の日付の論理より簡単です.どちらかというと、この2つを完成させることで大きな達成感が得られるのではないでしょうか.
今見ても簡単に書けないので、レベルはまだだめですね.