天天看点

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

家转载,为保留作者成果。转载请注明出处,有些文件在资源中也能够下载!假设你没有积分,能够联系我索要。

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

版权声明:本文博客原创文章,博客,未经同意,不得转载。