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科学和艺术语言 第六章 课后编程的更多相关文章
- Java程序设计(2021春)——第一章课后题(选择题+编程题)答案与详解
Java程序设计(2021春)--第一章课后题(选择题+编程题)答案与详解 目录 Java程序设计(2021春)--第一章课后题(选择题+编程题)答案与详解 第一章选择题 1.1 Java与面向对象程 ...
- Java程序设计(2021春)——第二章课后题(选择题+编程题)答案与详解
Java程序设计(2021春)--第二章课后题(选择题+编程题)答案与详解 目录 Java程序设计(2021春)--第二章课后题(选择题+编程题)答案与详解 第二章选择题 2.1 面向对象方法的特性 ...
- 【Java】《Java程序设计基础教程》第六章学习
第六章 常用的工具包 6.1 java.lang包 6.1.1 Object类 Object类是一个超级类,是所有类的直接或间接父类. public boolean equals(Object obj ...
- 【JAVA今法修真】 第六章 天道无情,锁定乾坤
您好,我是南橘,万法仙门的掌门,刚刚从九州世界穿越到地球,因为时空乱流的影响导致我的法力全失,现在不得不通过这个平台向广大修真天才们借去力量.你们的每一个点赞,每一个关注都是让我回到九州世界的助力,兄 ...
- C语言 第六章 多重循环练习
一.循环输入 #include "stdio.h" void main() { char c; do { printf("我告诉你1+1=2\n"); prin ...
- C语言 第六章 多重循环
一.概要 在c语言中,if,switch,for,while,do-while可以相互间多次嵌套. if(){ for() { for() { } } } while() { for(){ } for ...
- 2016.02.17 JS DOM编程艺术 第四五六章
看完这三章内容,集中精力,加快速度.
- Java - 自定义异常(尚学堂第六章异常机制作业判断三角形)
写一个方法void isTriangle(int a,int b,int c),判断三个参数是否能构成一个三角形, 如果不能则抛出异常IllegalArgumentException,显示异常信息 “ ...
- 新手小白入门C语言第六章:C运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C 语言内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 小编将会为大家逐一介 ...
随机推荐
- 站点接入QQ登录
首先引入授权js文件 <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/op ...
- Git使用摘要
svn过渡到git流程.使用我一直git svn场景,对于遇到的一些问题,并经常使用的功能来概括: 1.git svn出口: git svn clone "svn通路" 2.git ...
- hdu1430魔板
Problem Description 在魔方风靡全球之后不久,Rubik先生发明了它的简化版——魔板.魔板由8个同样大小的方块组成,每个方块颜色均不相同,可用数字1-8分别表示.任一时刻魔板的状态可 ...
- Linux日志清除
因为数据要求.经常需要抓住和筛选过滤数据,大概花了7 8个月.改变了机旁数据.重新开始,发现"No space left on device" 解决方法: 直接删除日志(简单粗暴) ...
- Oracle 学习笔记 17 -- 异常处理(PL/SQL)
程序异常是在操作期间正常,出现在节目的准备过程是不可避免的例外.但是,必须有一个相应的异常处理机 制,以保证程序的正常运行.PL/SQL程序运行过程中出现的错误.称为异常. 一个优秀的程序都应该可以正 ...
- UVa 524 Prime Ring Problem(DFS , 回溯)
题意 把1到n这n个数以1为首位围成一圈 输出全部满足随意相邻两数之和均为素数的全部排列 直接枚举排列看是否符合肯定会超时的 n最大为16 利用回溯法 边生成边推断 就要快非常多了 #inc ...
- 在JBuilder8中使用ANT
在JBuilder8中使用ANT 作者:翁驰原 在JBuilder8中,Ap ...
- 问题:DataGrid该行并不总是很清楚验证错误(删除),
解决方案,如下面
转载,收藏转载请注明出处http://blog.csdn.net/metal1/article/details/37568391 景象:于DataGrid进数据有误,行验证返回new Validati ...
- JSON.stringify 语法解释
行为:此函数的作用主要是串行化对象. 或许有些人是过敏的字系列.我非常理解easy.是对象的类型转换成字符串类型(或者更确切的说是json类型的).就这么简单.打个例如说,你有一个类,那么你能够通过这 ...
- linux基础知识1
1. 硬盘分区 分区类型:主分区,扩展分区.逻辑分区: 分区规则: 一个硬盘仅仅能有1到4个主分区: 一个硬盘仅仅能有1个扩展分区: 一个硬盘的主分区和扩展分区最多仅仅能有4个. 扩展分区仅仅能用来包 ...