Java学习第二十七天<面向对象综合练习><猜拳游戏>

面向对象综合练习

找最大值

package chapter06.D10综合练习;
//找最大值
public class Homework01 {
    public static void main(String[] args) {
        A01 a01 = new A01();
        double []arr={1.1,2.9};
        Double res =a01.max(arr);
        if (res!=null){
            System.out.println("arr的最大值="+res);
        }else{
            System.out.println("arr的输入有误");
        }
​
    }
}
class A01 {
    public Double max(double[] arr){
​
        if(arr!=null&&arr.length>0){
            double max=arr[0];
            for (int i = 1; i < arr.length ; i++) {
                if (max<arr[i]){
                    max=arr[i];
                }
            }
            return max;//double
        }else {
            return null;
        }
​
    }
}

查找字符

package chapter06.D10综合练习;
//查找字符串是否在字符串数组中,返回索引,找不到返回-1
public class Homework02 {
    public static void main(String[] args) {
    String[] strs={"jack","tom","mary","milan"};
        A02 a02 = new A02();
        int index=a02.find("jack2",strs);
        System.out.println("查钊的index="+index);
    }
}
class A02{
    public int find(String findStr,String[] strs){
​
        for (int i = 0; i <strs.length ; i++) {
            if (findStr.equals(strs[i])){
                return i;
            }
​
        }return -1;
    }
}

价格更改

package chapter06.D10综合练习;
//价格超150,改为150,超100,改为100
public class Homework03 {
    public static void main(String[] args) {
        Book book = new Book("笑傲江湖",300);
        book.info();
        book.updatePrice();//价格更新
        book.info();
​
    }
}
class Book{
     String name;
     double price;
     public Book(String name,double price){
         this.name=name;
         this.price=price;
     }
     public void updatePrice(){
         if (this.price>150){//方法中没有局部变量,this.price等价price
             this.price=150;
         }else if(this.price>100){
             this.price=100;
         }
     }
     public void info(){
         System.out.println("书名="+this.name+"价格="+this.price);
     }
}

拷贝数组

package chapter06.D10综合练习;
//拷贝数组
public class Homework04 {
    public static void main(String[] args) {
       int[] oldArr={10,30};
        A03 a03 = new A03();
        int [] newArr =a03.copyArr(oldArr);
        System.out.println("=========返回的newArr情况=========");
        for (int i = 0; i < newArr.length ; i++) {
            System.out.println(newArr[i] + "\t");
        }
​
    }
}
class A03{
    public int[] copyArr(int[] oldArr){
        int []newArr=new int[oldArr.length];
        for (int i = 0; i < oldArr.length ; i++) {
            newArr[i]=oldArr[i];
        }
        return newArr;
    }
​
}

求周长面积

package chapter06.D10综合练习;
//求周长面积
public class Homework05 {
    public static void main(String[] args) {
        Circle circle = new Circle(3);
        System.out.println("面积="+circle.area());
        System.out.println("周长="+circle.len());
​
    }
}
class Circle{
    double radius;
    public Circle(double radius){
        this.radius=radius;
    }
    public double area(){
        return Math.PI*radius*radius;
    }
    public double len(){
        return 2*Math.PI*radius;
    }
}

和差乘商

package chapter06.D10综合练习;
//和差乘商
public class Homework06 {
    public static void main(String[] args) {
        Cale cale = new Cale(2,0);
        System.out.println("和="+cale.sum());
        System.out.println("差="+cale.minus());
        System.out.println("乘="+cale.mul());
        Double res= cale.div();
        if (res!=null){
            System.out.println("商="+cale.div());
        }
​
​
    }
}
class Cale{
    double num1;
    double num2;
    public Cale(double num1,double num2){
        this.num1=num1;
        this.num2=num2;
    }
    public double sum(){
       return num1+num2;
    }
    public double minus(){
        return num1-num2;
    }
    public double mul(){
        return num1*num2;
    }
    public Double div(){
        if (num2==0){
            System.out.println("分母不能为0");
            return null;//double>Double
        }else {
            return num1/num2;
        }
    }
}

练习题

package chapter06.D10综合练习;
​
public class Homework07 {
    int count=9;
    public void count1(){
        count=10;//就是属性,改为10
        System.out.println("counts="+count);
    }
    public void count2(){
        System.out.println("counts="+count++);
    }
​
    public static void main(String[] args) {
        new Homework07().count1();//new Homework07()匿名对象,只有空间,不指向对象 new Homework07().count1()创建好匿名对象后就调用count1()
        Homework07 t1 = new Homework07();//新对象新地址,属性为9
        t1.count2();
        t1.count2();
​
    }
​
}

播放提示

package chapter06.D10综合练习;
​
public class Homework08 {
    public static void main(String[] args) {
        Music music = new Music("笑闯江湖",300);
        music.play();
        System.out.println(music.getInfo());
    }
}
class Music{
    String name;
    int times;
    public Music(String name,int times){
        this.name=name;
        this.times=times;
    }
    public void play(){
        System.out.println("音乐"+name+"正在播放中...时长为"+times+"秒");
    }
    public String getInfo(){
        return "音乐"+name+"播放时间为"+times;
    }
}

构造器复用

package chapter06.D10综合练习;
​
public class Homework09 {
    public static void main(String[] args) {
        Employee employee = new Employee("ok",11,"zhengtu",'男',8);
        System.out.println(employee.job+employee.name+employee.sal+employee.gender+employee.age);
    }
}
class Employee{
    String name;
    char gender;
    int age;
    String job;
    double sal;
    //要求可以复用构造器,先写属性少的构造器
    public Employee(String job,double sal){
        this.job=job;
        this.sal=sal;
    }
    public Employee(String name,char gender,int age){
        this.name=name;
        this.gender=gender;
        this.age=age;
    }
    public Employee(String job,double sal,String name,char gender,int age){
        this(name, gender, age);//使用本类构造器
        this.job=job;
        this.sal=sal;
    }
}

面积表

package chapter06.D10综合练习;
​
public class Homework10 {
    public static void main(String[] args) {
        Circle2 p = new Circle2();
        PassObject passObject = new PassObject();
        passObject.printAreas(p,5);
    }
}
class Circle2{
    double radius;
    /*
    public Circle2(double radius) {
        this.radius = radius;
    }
    */
    public double findArea(){
        return Math.PI*radius*radius;
    }
    //添加方法setRadius,修改对象半径值
}
class PassObject{
    public void printAreas(Circle2 c,int times){
        System.out.println("radius\tarea");
        for (int i = 1; i <=times ; i++) {
            c.radius=i;//修改c对象半径
            System.out.println(i+"\t"+c.findArea());
​
        }
    }
}

猜拳游戏

package chapter06.D10综合练习;
​
import java.util.Random;
import java.util.Scanner;
​
//猜拳
public class MoraGame {
    public static void main(String[] args) {
        Tom t = new Tom();//创建玩家对象
        int isWinCount=0;//记录输赢次数
        int [][]arr1=new int[3][3];//接收局数,tom出拳情况和电脑出拳情况
        String[]arr2=new String[3];//创建一维数组,接收输赢情况,string类型不能与int数组一起
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            //记录次数
            arr1[i][0]=t.count;
            //获取玩家出拳
            System.out.println("输入你要出的拳(0-拳头),(1-剪头),(2-布):");
            int num=scanner.nextInt();
            int tomGuess=t.TomGuessNum(num);
            arr1[i][1]=tomGuess;
            //获取电脑出拳
            int comGuess=t.computerNum();
            arr1[i][2]=comGuess;
            //将玩家猜拳与电脑比较
            String iswin=t.vscomputer();
            arr2[i]=iswin;
            //输出每局情况
            System.out.println("=============================");
            System.out.println("局数\t玩家的出拳\t电脑的出拳\t输赢的情况");
            System.out.println(t.count+"\t"+tomGuess+"\t\t"+comGuess+"\t\t"+iswin);//arr2[i]
            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.print(arr1[a][b]+"\t\t\t");
            }
            System.out.println(arr2[a]);
            System.out.println();
        }
        System.out.println("你赢了"+isWinCount+"次");
    }
}
class Tom{
    int tomGuessNum;//0,1,2
    int comGuessNum;//0,1,2
    int winCountNum;//赢得次数
    int count=1;//比赛次数
​
    public int computerNum(){//得到电脑随机数
        Random r = new Random();
        comGuessNum=r.nextInt(3);//0-2
        return comGuessNum;
    }
    public int TomGuessNum(int tomGuessNum){
        if (tomGuessNum>2||tomGuessNum<0){
            System.out.println("输入有误");;
        }
        this.tomGuessNum=tomGuessNum;
        return tomGuessNum;
    }
    public String vscomputer(){
        if (tomGuessNum==0&&comGuessNum==2){
            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){//每判断一次,计数+1
        count++;
        if (s.equals("你赢了")){
            winCountNum++;
        }
        return winCountNum;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值