类的练习

作业练习

  1. 编写类A01,定义方法max,实现求某个double数组的最大值,并返回 Homework01.java

  2. 编写类A02,定义方法find,实现查找某字符串数组中的元素查找,并返回索引, 如果找不到,返回 -1 Homework02.java

  3. 编写类Book,定义方法updatePrice,实现更改某本书的价格,具体:如果价格 > 150

    , 则更改为150,如果价格 > 100 , 更改为100,否则不变 Homework03.java

  4. 编写类A03, 实现数组的复制功能copyArr, 输入旧数组,返回一个新数组 ,元素和旧数组一样 Homework04.java

  5. 定义一个圆类Circle, 定义属性:半径,提供显示圆周长功能的方法, 提供显示圆 面积的方法 Homework05.java

  6. 编程创建一个Cale计算类,在其中定义2个变量表示两个操作数,定义四个方法实 现求和、差、乘、商(要求除数为0的话,要提示) 并创建两个对象,分别测试

Homework06.java

7.设计一个Dog类,有名字 颜色 和年龄属性,定义输出方法show( )显示其信息。 并创建对象,进行测试、(提示 this.属性) Homework07.java

8.给定一个Java程序的代码如下所示,则编译运行后,输出的出结果是

public class Homework08 {
  public static void main(String[] args) {
  //1.new Homework08()是匿名对象,只能使用使用一次,因为没有名字也就是没有栈空间的指向
      new Homework08().count1();
      //2..count1()创建好匿名对象之后,就调用count1()
      Homework08 t1 = new Homework08();
      t1.count2();
      t1.count2();
  }
  int count = 9;
  public void count1() {
      count = 10;
      //3.这里的count是匿名对象的属性
      System.out.println("count1=" + count);
      //即将匿名对象的count更改为了10
  }
  public void count2() {
      System.out.println("count1=" + count++);
      //4.此时的t1对象的count属性是9,先输出之后再++也就是10
      //先输出10后自增就是11
  }
}
  1. 定义Music类,里面有音乐名name、音乐时长times属性,并有播放功能和返回本身属性信息的功能方法getInfo Homework09.java

10.试写出以下代码的运行结果( ) Homework09.java

class Demo {
  int i = 100;
  public void m() {
      int j = i++;
      //先赋值后自增,即j=100 ,i由于自增为101
      System.out.println("i=" + i);
      //此时打印i就为101
      System.out.println("j=" + j);
      //j为100
  }}
class Test {
  public static void main (String[]args){
      Demo d1 = new Demo();
      //创建一个对象然后d1指向这个对象的空间
      Demo d2 = d1;
      //将d1指向的空间给到d2,此时d1和d2都指向同一个对象
      d2.m();
      //执行m方法
      //打印i=101 ,j=100
      System.out.println(d1.i);
      System.out.println(d2.i);
      //由于d1和d2指向的都是同一个对象,因此i都是101
  }}
  1. 在测试方法中,调用method方法,代码如下,编译正确,试写出method方法的 定义形式,调用语句为:System.out.println(method(method(10.0,20.0),100); Homework11.java

  2. 创建一个Employee类,属性有(名字,性别,年龄,职位,薪水),提供3个构造方法,可以初始化

    (1): (名字,性别,年龄,职位,薪水) (2) : (名字,性别,年龄)(3) : (职位,薪水) , 要求充分复用构造器Homework12.java

13.将对象作为参数传递给方法 题目要求: (1) 定义一个Circle类,包含一个double型的radius属性代表圆的半径,findArea()方 法返回圆的面积。 (2) 定义一个类PassObject,在类中定义一个方法printAreas(),该方法的定义如下: public void printAreas(Circle c, int times) //方法签名 (3) 在printAreas方法中打印输出1到times之间的每个整数半径值,以及对应的面积。 例如,times为5,则输出半径1,2,3,4,5,以及对应的圆面积。 (4) 在main方法中调用printAreas()方法,调用完毕后输出当前半径值。

  1. 扩展题 有个人 Tom 设计他的成员变量. 成员方法, 可以电脑猜拳. 电脑每次都会随机生成 0, 1, 2 0 表示 石头 1 表示剪刀 2 表示 布 并要可以显示Tom的输赢次数(清单)

 

import java.util.Random;
import java.util.Scanner;

public class Homework15 {
  public static void main(String[] args) {
      //创建一个玩家对象
      Tom1 t = new Tom1();
      // 用来记录最后输赢的次数
      int isWinCount = 0;

      // 创建一个二维数组用来接收局数, Tom出拳情况以及电脑出拳情况
      int[][] arr1 = new int[3][3];
      int j = 0;

      // 创建一个一维数组, 用来接收输赢情况
      String[] arr2 = new String[3];
      Scanner scanner = new Scanner(System.in);
      for (int i = 0; i < 3; i++) {
          // 获取玩家出的拳
          System.out.println("请输入你要出的拳(0-拳头, 1-剪刀, 2-布)");
          int num = scanner.nextInt();
          t.setTomGuessNum(num);
          int tomGuess = t.getTomGuessNum();
          arr1[i][j+1] = tomGuess;

          //获取电脑的出拳
          int comGuess = t.computerNum();
          arr1[i][j+2] = comGuess;

          //将玩家猜的拳和电脑的比较
          String isWin = t.vsComputer();
          arr2[i] = isWin;
          arr1[i][j] = t.count;

          // 对每一局的情况进行输出
          System.out.println("===================================");
          System.out.println("局数\t玩家的出拳\t电脑的出拳\t输赢情况");
          System.out.println(t.count + "\t\t" + tomGuess + "\t\t\t" + comGuess + "\t\t" + t.vsComputer());
          System.out.println("===================================");

          System.out.println("\n\n");
          isWinCount = t.winCount(isWin);
      }

      //对游戏的最终结果输出
      System.out.println("局数\t玩家的出拳\t电脑的出拳\t\t输赢情况");
      for(int a=0;a<arr1.length;a++){
          for (int b=0;b<arr1[a].length;b++){
              System.out.println(arr1[a][b]+"\t\t\t");
          }
          System.out.println(arr2[a]);
          System.out.println();
      }
      System.out.println("你赢了"+isWinCount+"次");

  }

}




// Tom类
class Tom1{// 核心代码
  // 玩家出拳的类型
  int tomGuessNum;
  // 电脑出拳的类型
  int comGuessNum;
  // 玩家赢的次数
  int winCountNum;
  // 比赛的次数
  int count = 1;

  public void showInfo(){
      //.....
  }
  //电脑随机生成猜拳数字的方法
// @return
  public int computerNum(){
      Random r = new Random();
      comGuessNum = r.nextInt(3);//方法 返回0-2的随机数
      //System.out.println(comGuessNum);
      return comGuessNum;
  }
  //设置玩家猜拳的方法
  // @param tomGuessNum
  public void setTomGuessNum(int tomGuessNum) {
      if (tomGuessNum > 2 || tomGuessNum < 0) {
          //抛出一个异常
          throw new IllegalArgumentException("数字输入错误");
      }
      this.tomGuessNum = tomGuessNum;
  }
  public int getTomGuessNum(){
      return tomGuessNum;
  }
  //比较猜拳结果
  //@return //玩家赢返回true, 否则返回false
  public String vsComputer(){
      //比较巧
      if (tomGuessNum == 0 && comGuessNum ==1){
          return "你赢了";
      } else if (tomGuessNum == 1 && comGuessNum ==2){
          return "你赢了";
      } else if (tomGuessNum == 2 && comGuessNum ==0){
          return "你赢了";
      } else if (tomGuessNum == comGuessNum){
          return "平手";
      } else {
          return "你输了";
      }
  }

  public int winCount(String s){
      count++;//控制玩的次数
      if (s.equals("你赢了")) {
          //统计赢的次数
          winCountNum++;
      }
          return winCountNum;
  }

}

 
posted @ 2022-04-23 17:04  comia  阅读(164)  评论(0)    收藏  举报