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、没有做

java语言的科学与艺术 第六章 课后编程

时间: 06-13

java语言的科学与艺术 第六章 课后编程的相关文章

Java语言程序设计基础篇 数组(六)

Java语法之数组 数组的定义 数组是对象. 如:int [ ]  x = new int[100];或 :int x [ ]  = new int[100];(这种方式主要是为了适应C/C++程序员) 声明一个数组变量:int [ ] x;并不会在内存中给数组分配任何空间,仅创建一个引用数组的存储地址. 数组创建后,其元素赋予默认值,数值型基本数据类型默认值为0,char类型为'\u0000',boolean类型为false. 数组的静态初始化 如:int [ ] x = new int [

C语言笔记(谭版 第六章~末)

第六章       利用数组批量处理数据 数组是一组有序数据的集合,数组中的每一个元素都属于同一数据类型. 算是一种数据的组织结构.初现结构端倪. 一维数组 定义: 类型符 数组名[常量表达式]  数组名命名遵行标示符命名规则 C语言中不允许对数组的大小作动态定义. 说明:如果在被调用函数中定义数组,其长度可以是变量或非常量表达式.实参.此情况称为可变长数组.若数组指定为静态存储方式,此方式不合法. 引用: 数组名[下标] 下标是常量或常量表达式   序号从0开始计起. 初始化:初始化列表  i

【数据分析 R语言实战】学习笔记 第六章 参数估计与R实现(下)

6.3两正态总体的区间估计 (1)两个总体的方差已知 在R中编写计算置信区间的函数twosample.ci()如下,输入参数为样本x, y,置信度α和两个样本的标准差. > twosample.ci=function(x,y,alpha,sigma1,sigma2){ + n1=length(x);n2=length(y) + xbar=mean(x)-mean(y) + z=qnorm(1-alpha/2)*sqrt(sigma1^2/n1+sigma2^2/n2) + c(xbar-z,xb

《R语言实战》读书笔记-- 第六章 基本图形

首先写第二部分的前言. 第二部分用来介绍获取数据基本信息的图形技术和统计方法. 本章主要内容 条形图.箱型图.点图 饼图和扇形图 直方图和核密度图 分析数据第一步就是要观察它,用可视化的方式是最好的.本章的主题有两个 1.将变量的分布作可视化展示 2.通过结果变量进行跨组比较 下面从不同的图形开始探索数据. 6.1条形图 条形图是通过条形展示离散变量的频数分布.函数是barplot: barplot(height) height是主要参数,horiz = TRUE就是横向条形图. height可

java基础 第六章课后习题

1.说明循环结构中break语句和continue语句的区别. 在循环结构中 break语句 是结束程序运行. continue语句是结束本句程序  不是结束程序. 2.使用for循环结构实现,从键盘上接受从周一至周五每天学习时间,并计算每日平均学习时间.输出结果. 3.鸡兔同笼问题.今有鸡兔同笼,上有35头,下有94足,问鸡兔各几只?试编写程序解决问题. 4.开发一个标题为" FlipFlop"的游戏应用程序.它从 1 计数到100 ,遇到3的倍数输出单词" Flip&qu

《java 语言程序设计》第3、4章编程练习

3.1 public class test { public static void main(String[] args) { System.out.println("Enter a, b, c: "); Scanner input = new Scanner(System.in); double a = input.nextDouble(); double b = input.nextDouble(); double c = input.nextDouble(); double d

java基础(第六章课后作业)03

1 package com.xunhuan; 2 3 public class ZuoYe003 { 4 5 6 public static void main(String[] args) { 7 8 for (int i = 1; i<=100; i++) { //进入for循环,(i=1 i<=100)从1开始到100结束 9 if (i%3==0&&i%5==0) { //if判断 i取余3没有余数的,并且i取余5没有余数进入if,输出是3和5的倍数 10 System

java第六章课后习题 p106

1.this和super各有几种用法? this三种用法: 用法一:表示当前对象引用,常用于形参或局部变量与类的成员变                  量同名的情形,使用this.成员名表示当前对象的成员 用法二:表示当前对象 用法三: 调用当前类的构造方法 super访问当前类的直接父类,主要应用场合: 子类的数据成员或成员方法与父类的数据成员或成员方法名字相同时,当要调用父类的同名方法或同名数据成员时则可用super来指明.即super.数据成员:super.成员方法super(参数) ,

第六章|网络编程-socket开发

1.计算机基础 作为应用开发程序员,我们开发的软件都是应用软件,而应用软件必须运行于操作系统之上,操作系统则运行于硬件之上,应用软件是无法直接操作硬件的,应用软件对硬件的操作必须调用操作系统的接口,由操作系统操控硬件. 比如客户端软件想要基于网络发送一条消息给服务端软件,流程是: 1.客户端软件产生数据,存放于客户端软件的内存中,然后调用接口将自己内存中的数据发送/拷贝给操作系统内存 2.客户端操作系统收到数据后,按照客户端软件指定的规则(即协议).调用网卡发送数据 3.网络传输数据 4.服务端