java語言的科學與藝術 第六章 課後編程

歡迎大家轉載,爲保留作者成果,轉載請註明出處,http://blog.csdn.net/netluoriver,有些文件在資源中也可以下載!如果你沒有積分,可以聯繫我索要!

1、

package SixthCharter;

/*
* File: Poker.java
* ---------------------------
* 這是第6章的第一題
* Author luoriver
*/

import acm.program.*;

import acm.util.*;

public class Poker extends ConsoleProgram {
	public void run(){
		println("這個程序是隨機顯示選擇的撲克");
		
		while(true){
			println();
			int i = readInt();
			showPoker();
			if (i==2) break;
		}
	}
	
	/*
	 * 顯示隨機的撲克牌
	 */
	private void showPoker(){
		int num = rgen.nextInt(1,13);
	//	rgen.setSeed(2);
		switch(num){
			case 1: 
				print("Ace"); break;
			case 11: 
				print("Jack"); break;
			case 12:
				print("Queen"); break;
			case 13:
				print("King"); break;
			default: print(num);
		}
		
		print(" of ");
		int color = rgen.nextInt(1,4);
		switch(color){
			case 1: 
				print ("Spades"); break;
			case 2: 
				print("Diamonds"); break;
			case 3:
				print("Clubs"); break;
			case 4:
				print("Hearts"); break;
		}
		
		
		
	}
	
	/*create an instance variable for the random number generator
	 */
	private RandomGenerator rgen =RandomGenerator.getInstance();
}

2、

package SixthCharter;

/*
* File: TossCoin.java
* ---------------------------
* 這是第6章的第2題
* Author luoriver
*/

import acm.program.*;
import acm.util.*;

public class TossCoin extends ConsoleProgram {
	public void run(){
		println("這個程序是拋硬幣,一直拋到出現3個連續的下面爲止,並顯示被拋的總次數:");
		int toss_num = 0;
		//設置檢查點,是否到了連續的次數
		int n = 0;
				
		while(n < CHECK_NUM){
			tossCoin();
			toss_num ++;
			if(tossCoin().equals("Head")){
				println("Head");
				n++;	
			}else{
				println("Tails");
				n = 0;
			}
		}
		println("一共運行了" + toss_num + "次。");
		
	}
	
	/**
	 * 這裏是進行的投幣方法
	 */
	private String tossCoin(){
		int n = rgen.nextInt(1, 2);
		return returnContent(n);
	}
	
	
	/**
	 * 這裏是顯示返回硬幣的哪一面
	 * @Head
	 * @Tails
	 */
	
	private String returnContent(int num){
		if(num == 1){
			return "Head"; 
		 }else{
			 return "Tails";  
		 }
	}
		
	
	/*create an instance variable for the random number generator
	 */
	private RandomGenerator rgen =RandomGenerator.getInstance();
	private static final int CHECK_NUM = 3;
}

3、

package SixthCharter;

/*
* File: ThrowDart.java
* ---------------------------
* 這是第6章的第3題
* Author luoriver
*/

import acm.program.*;
import acm.graphics.*;
import acm.util.*;

public class ThrowDart extends ConsoleProgram {
	public void run(){
		println("這個程序來用投鏢來模擬正方形與圓形的面積之比是一個近似的 PI值:");
		
		double SquareArea = 4 * (R * R);
		double CircleArea = PI * (R * R);
		println("圓形與正方形的面積之比爲" + CircleArea / SquareArea);
		println("投鏢時落在圓形與正方形內的次數之比爲" + throwDart());
		//println(3.14/4);
		//throwDart();
	}
	
	private double throwDart(){
		double circlenum = 0;
		double squarenum = 0;
		
		while(squarenum < ThrowNum){
			double rx = rgen.nextDouble(-1.0, 1.0);
			double ry = rgen.nextDouble(-1.0, 1.0);
	//		rgen.setSeed(2);
			if(((rx * rx) + (ry * ry)) < 1){
				circlenum ++;
				squarenum ++;
			}else{
				squarenum ++;
			}
		}
		println();
		println("投在圓形內的次數爲" + circlenum);
		println("投在正方形內的次數爲" +squarenum);
		
		return circlenum / squarenum;
		
	}
	
	
		
		
	
	/*create an instance variable for the random number generator
	 */
	private RandomGenerator rgen =RandomGenerator.getInstance();
	
	//設置投鏢的次數
	private static final int ThrowNum = 10000;
	
	private static final double PI = 3.14;
	
	private static final double R= 1; 
}

4、

package SixthCharter;

/*
* File: Poker.java
* ---------------------------
* 這是第6章的第一題
* Author luoriver
*/

import acm.program.*;

import acm.util.*;

public class HalfLife extends ConsoleProgram {
	public void run(){
		println("這個程序是模擬原子的半衰期");
		println("There are " + RADIOACTIVE_ACTOM_NUM + "actom initially");
		int left_num = RADIOACTIVE_ACTOM_NUM;
		int year = 0;
		while(left_num > 0){
			int new_actom_num = left_halflife_actom_num(left_num);
			left_num -= new_actom_num;
			year ++;
			println("There are " + left_num + " actom at the end of year" + year);
			new_actom_num = 0;
		}
		
	}
	//定義衰減原子的數量
	private int left_halflife_actom_num(int num){
		int actom_num = 0;
		for(int i = num; i > 0; i -- ){
			while(rgen.nextBoolean()){
				actom_num ++;
				break;
			}
		}
		return actom_num;
	}
	
	
	/*create an instance variable for the random number generator
	 */
	private RandomGenerator rgen =RandomGenerator.getInstance();
	
	/**
	 * 定義放射性原子的數量
	 * @RADIOACTIVE_ACTOM_NUM
	 */
	private static final int RADIOACTIVE_ACTOM_NUM = 10000;
}

5、

package SixthCharter;

/*
 * File: Poker.java
 * ---------------------------
 * 這是第6章的第5題
 * Author luoriver
 */

import acm.program.*;
import java.util.Scanner;
import acm.util.*;

public class Bingo extends ConsoleProgram {
	public void run() {
		/*
		 * 首先詢問是否要介紹下賭博規則,這裏以後再寫 讀取文字不會先用數字代替吧,1代表繼續,2代表不玩了
		 */
		println();
		int know_rules = readInt("你想了解賭博機的規則嗎?1代表爲想了解,2代表已經知道規則:");
		if (know_rules == 1) {
			println(/*"內容太多,我沒有寫呢,看看Java語言的科學與藝術第172頁吧"*/  RULES);
		}
		println("開始玩吧!祝玩的愉快!");
		start_play();
	}

	private void start_play(){
		int remain_money = CLIENT_INIT_MONEY;
		
		print_remain_money(remain_money);
		
		while(remain_money > 0){
			remain_money --;
			if(remain_money == 0){
				println("");
			}
			String first_show = show_result();
		//	print("111111" + first_show);
			String second_show = show_result();
		//	println("22222" + first_show);
			String third_show = show_result();
		//	print("333333333" + first_show);
			/*Scanner num = new Scanner(System.in);
			int n = num.nextInt();*/
			int n = readInt();
			if(n == 2) break;
		//	print_remain_money(remain_money);
					
			if(first_show.equals("BAR") && second_show.equals("BAR") && third_show.equals("BAR")){
				remain_money += 250;
				println(first_show + " " + second_show  + " " + third_show +" you win" );
				print_remain_money(remain_money);
			}else if(first_show.equals("BELL") && second_show.equals("BELL") && (third_show.equals("BELL") || third_show.equals("BAR"))){
				remain_money += 20;
				println(first_show + " " + second_show  + " " + third_show +" you win" );
				print_remain_money(remain_money);
			}else if(first_show.equals("PLUM") && second_show.equals("PLUM") && (third_show.equals("PLUM") || third_show.equals("BAR"))){
				remain_money += 14;
				println(first_show + " " + second_show  + " " + third_show +" you win" );
				print_remain_money(remain_money);
			}else if(first_show.equals("ORANGE") && second_show.equals("ORANGE") && (third_show.equals("ORANGE") || third_show.equals("BAR"))){
				remain_money += 10;
				println(first_show + " " + second_show  + " " + third_show +" you win" );
				print_remain_money(remain_money);
			}else if(first_show.equals("CHERY") && second_show.equals("CHERY") && third_show.equals("CHERY")){
				remain_money += 7;
				println(first_show + " " + second_show  + " " + third_show +" you win" );
				print_remain_money(remain_money);
			}else if(first_show.equals("CHERY") && second_show.equals("CHERY")){
				remain_money += 5;
				println(first_show + " " + second_show  + " " + third_show +" you win" );
				print_remain_money(remain_money);
			}else if(first_show.equals("CHERY")){
				remain_money += 2;
				println(first_show + " " + second_show  + " " + third_show +" you win" );
				print_remain_money(remain_money);
			}else{
				println(first_show + " " + second_show  + " " + third_show +" you loss" );
				print_remain_money(remain_money);
			}
			
			}
	//	print_remain_money(remain_money); 
	}
			
	private void print_remain_money(int remain){
		println("you have $" + remain + " would you like to play?");
	}

	private String show_result() {
		int random_show = rgen.nextInt(1, 6);
		switch (random_show) {
		case 1:
			return "BAR";
		case 2:
			return "LEMON";
		case 3:
			return "ORANGE";
		case 4:
			return "PLUM";
		case 5:
			return "BELL";
		default:
			return "CHERRY";
		}
	}

	/*
	 * 設定系統給用戶初始錢
	 */
	private static final int CLIENT_INIT_MONEY = 50;

	/*
	 * create an instance variable for the random number generator
	 */
	private RandomGenerator rgen = RandomGenerator.getInstance();
	
	private static final String RULES= "典型的賭博機有3個輪子,他們在一個狹窄的窗口後面旋轉。每個輪子都標記爲CHERRY、LEMON、ORANGE、PLUM、BELL和BAR。然而,窗口每次只允許看到一個輪子的一個符號。"
			+"下面顯示的是典型的獲勝模式及其相關回報:"
			+"BAR      BAR      BAR              -- 支付 $250"
			+ "BELL    BELL   BELL/BAR         -- 支付 $20"
			+ "PLUM    PLUM   PLUM/BAR         -- 支付 $14"
			+ "ORANGE  -  ORANGE  - ORANGE/BAR       -- 支付 $10"
			+ "CHERRY  -  CHERRY  - CHERRY           -- 支付 $7"
			+ "CHERRY  -  CHERRY  - --               -- 支付 $5"
			+ "CHERRY  -  CHERRY  - --               -- 支付 $2";
   
    
};

6、7合併了

package SixthCharter;

/*
 * File: Poker.java
 * ---------------------------
 * 這是第6章的第5題
 * Author luoriver
 */

import acm.program.*;

import java.util.Scanner;

import acm.util.*;

public class Calculate extends ConsoleProgram {
	public void run() {
		int first = rgen.nextInt(0, 20);
		int second = rgen.nextInt(0, 20);
		sys_question(first, second);
	}

	/*
	 * 定義系統提出問題的方法
	 */
	private void sys_question(int first, int second) {
		for (int i = 0; i < PROBLEM_NUM; i++) {
			first = rgen.nextInt(0, 20);
			second = rgen.nextInt(0, 20);
			int sys_answer = first + second;

			if (sys_answer <= 20) {
				print(first + " + " + second + " = ");
				answer(sys_answer);
			} else {
				i--;
			}
		}
	}

	/*
	 * 定義學生回答的方法
	 */
	private void answer(int sys_answer) {
		int student_answer = readInt();
		if (student_answer == sys_answer) {
			println(success());
		} else {
			for (int i = 0; i < ANSWER_NUM; i++) {
				println("答案不正確,請再輸入一遍");
				student_answer = readInt();
			}
			println("正確答案是" + sys_answer);
		}
	}

	/*
	 * 顯示輸入正確答案後的鼓勵信息
	 */
	private String success() {
		int n = rgen.nextInt(1, 3);
		switch (n) {
		case 1:
			return "You got it";
		case 2:
			return "connect";
		default:
			return "That's the answer";
		}
	}

	/*
	 * create an instance variable for the random number generator
	 */
	private RandomGenerator rgen = RandomGenerator.getInstance();
	/*
	 * 定義出題的個數
	 */
	private static final int PROBLEM_NUM = 5;

	/*
	 * 定義學生錯誤回答問題的次數
	 */
	private static final int ANSWER_NUM = 3;
}

8、

package SixthCharter;

/*
* File: Poker.java
* ---------------------------
* 這是第6章的第9題
* Author luoriver
*/

import acm.program.*;

import acm.util.*;

public class NewPoker extends ConsoleProgram {
	public void run(){
		println("這個程序是隨機顯示選擇的撲克");
		int level = level();
		String color = color();
		Card show = new Card(level, color);
		println();
		println("直接顯示show類爲" + show);
		println();
		print(show.toString(level, color));
			
		}
	
	
	public class Card{
		
		public Card (int level, String color){
			println("等級是" + level + "花色是" + color);
		}
		public String toString(int level, String color){
			return "toString 方法顯示等級爲" + level + "花色是" + color;
		}
		
	}
	
	public int getLevel(){
		return level();
	}
	
	public String getColor(){
		return color();	
	}
	
	
	
	/*
	 * 顯示隨機的撲克牌
	 */
	private void showPoker(){
		int num = rgen.nextInt(1,13);
	//	rgen.setSeed(2);
		switch(num){
			case 1: 
				print("Ace"); break;
			case 11: 
				print("Jack"); break;
			case 12:
				print("Queen"); break;
			case 13:
				print("King"); break;
			default: print(num);
		}
	}
	
	private String color(){
		int color = rgen.nextInt(1,4);
		switch(color){
			case 1: 
			//	print("Spades");
				return "Spades";
			case 2: 
			//	print("Diamonds");
				return "Diamonds";
			case 3:
			//	print("Clubs");
				return "Clubs";
			default:
			//	print("Hearts");
				return "Hearts";
		}
	}
	
	private int level(){
		int n = rgen.nextInt(1, 4);
		switch(n){
		case 1: 
			return LEVEL1;
		case 2: 
			return LEVEL2;
		case 3: 
			return LEVEL3;
		default: 
			return LEVEL4;
	}
	
	
	
	/*private void color(){
		int color = rgen.nextInt(1,4);
		switch(color){
			case 1: 
				print("Spades");
			case 2: 
				print("Diamonds");
			case 3:
				print("Clubs");
			case 4:
				print("Hearts");
	}
		*/
		
		
	}
	
	/*create an instance variable for the random number generator
	 */
	private RandomGenerator rgen =RandomGenerator.getInstance();
	
	/*
	 * 定義撲克的花色常量
	 */
	private static final String CLUBS = "CLUBS";
	private static final String DIMONDS = "DIMONDS";
	private static final String HEARTS = "HEARTS";
	private static final String SPADES = "SPADES";
	
	/*
	 * 定義等級常量的值 
	 */
	private static final int LEVEL1 = 1;
	private static final int LEVEL2 = 11;
	private static final int LEVEL3 = 12;
	private static final int LEVEL4 = 13;
	
}

9、

package SixthCharter;

public class LibaryRecord {
	public LibaryRecord(String book_name, String author, int catalog_number, String publisher, int public_date, boolean isCurrent){
		this.book_name = book_name;
		this.author = author;
		this.catalog_number = catalog_number;
		this.publisher = publisher;
		this.public_date = public_date;
		this.isCurrent = isCurrent;
	}
	
	public LibaryRecord(String book_name, String author, int catalog_number, String publisher, int public_date){
		this.book_name = book_name;
		this.author = author;
		this.catalog_number = catalog_number;
		this.publisher = publisher;
		this.public_date = public_date;
		isCurrent = true;
	}
	
	public String getBookName(){
		return book_name;
	}
	
	public String getAuthor(){
		return author;
	}
	
	public int getCatalogNum(){
		return catalog_number;
	}
	
	public String getPublisher(){
		return publisher;
	}
	
	public int getPublic_date(){
		return public_date;
	}
	
	public boolean getisCurrent(){
		return isCurrent;
	}
	
	public void setisCurrent(boolean isCurrent){
		this.isCurrent = isCurrent;
	}
	
	@Override
	public String toString(){
		return "Book_name" + book_name + " author: " + author + " 目錄號: " + catalog_number + "出版者" + publisher + " 出版年份: "
				+ public_date + " 當前是否流通: " + isCurrent;
	}
	
	/*
	 * 定義書名
	 */
	private String book_name;
	private String author;
	private int catalog_number;
	private String publisher;
	private int public_date;
	private boolean isCurrent;

}

10、沒有做


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章