面向对象综合练习
找最大值
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;
}
}