java第二十课 —— 面向对象习题

类与对象练习题

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

    public class Chapter7{public static void main(String[] args){A01 m = new A01();double[] doubleArray = null;Double res = m.max(doubleArray);if(res != null){System.out.println("数组的最大值是:" + res);}else{System.out.println("数组输入有误!数组不能为null或者{}。");}}
    }
    class A01{public Double max(double[] doubleArray){ //Double 是一个包装类返回值是doubleif(doubleArray != null && doubleArray.length > 0){ //先判断数组是否空,再判断数组长度是否大于0double dMax = 0.0;for(int i = 0; i < doubleArray.length; i++){if (doubleArray[i] > dMax){dMax = doubleArray[i];}}return dMax;}else{return null; //Double是类返回值可以为null}}
    }
    
  2. 编写类 A02,定义方法 find,实现查找某字符串是否在数组中,并返回索引。

    import java.util.Scanner;
    public class Chapter7{public static void main(String[] args){A02 m = new A02();String[] stringArray = {"abc", "123", "hello", "张三","java"};System.out.println("输入你要查找的字符串:");Scanner myScanner = new Scanner(System.in);String elem = myScanner.next();int index = m.find(stringArray, elem);if(index != -1){System.out.println("找到啦!" + elem + "在数组中的下标是:" + index);}else{System.out.println("很遗憾...未找到。");}}
    }
    class A02{public int find(String[] stringArray, String elem){int index = -1;for(int i = 0; i < stringArray.length; i++){if (stringArray[i].equals(elem)){index = i;}}return index;}
    }
    
  3. 编写类 Book,定义方法 updatePrice,实现更改某本书的价格,具体:如果价格 >150,则更改为150,如果价格 >100,更改为100,否则不变。

    public class Chapter7{public static void main(String[] args){Book m = new Book("java从入门到精通", 300);System.out.println("书的信息:");m.inFo();System.out.println("更改后书的价格后:");m.updatePrice();m.inFo();}
    }
    class Book{String name;int price;public Book(String name, int price){this.name = name;this.price = price;}public void updatePrice(){if(price > 150){price = 150;}else if(price > 100){price = 100;}}public void inFo(){System.out.println("书名:" + name + "价格:" + price);}
    }
    
  4. 编写类 A03,实现数组的复制功能 copyArr,输入旧数组,返回一个新数组,元素和旧数组一样。

    public class Chapter7{public static void main(String[] args){A03 m = new A03();int[] arr = {0,11,5,99,6};System.out.println("旧数组:");m.inFo(arr);System.out.println("\n新数组:");int[] arrNew = m.copyArr(arr);m.inFo(arrNew);}
    }
    class A03{public int[] copyArr(int[] arr){int[] newArr = new int[arr.length];for(int i = 0; i < arr.length; i++){newArr[i] = arr[i];}return newArr;}public void inFo(int[] arr){for(int i = 0; i < arr.length; i++){System.out.print(arr[i] + " ");}}
    }
    
  5. 定义一个圆类 Circle,定义属性:半径,提供显示圆周长功能的方法,提供显示圆面积的方法。

    public class Chapter7{public static void main(String[] args){Circle m = new Circle(1.0);m.inFo();}
    }
    class Circle{double radius;public Circle(double r){this.radius = r;}public double Perimeter(double r){return 2 * Math.PI * radius;}public double Area(double r){return Math.PI * radius * radius;}public void inFo(){System.out.println("圆的周长为:" + Perimeter(radius));System.out.println("圆的面积为:" + Area(radius));	}
    }
    
  6. 编程创建一个 Cale 计算类,在其中定义 2 个变量表示两个操作数,定义四个方法实现求和、差、乘、商(要求除数为 0 的话,要提示)并创建两个对象,分别测试。

    public class Chapter7{public static void main(String[] args){Cale m1 = new Cale(1.0, 2.0);Cale m2 = new Cale(1.0, 0.0);m1.inFo();m2.inFo();}
    }
    class Cale{double num1;double num2;public Cale(double num1, double num2){this.num1 = num1;this.num2 = num2;}public double Sum(double num1, double num2){return num1 + num2;}public double Difference(double num1, double num2){return num1 - num2;}public double Multiplication(double num1, double num2){return num1 * num2;}public Double Quotient(double num1, double num2){if(num2 != 0){return num1 / num2;}else{return null;}}public void inFo(){System.out.println("num1:" + num1 +"\t"+ "num2:" + num2);System.out.println("和:" + Sum(num1,num2));System.out.println("差:" + Difference(num1,num2));	System.out.println("乘:" + Multiplication(num1,num2));if(num2 != 0.0){System.out.println("商:" + Quotient(num1,num2));	}else{System.out.println("分母不能为0!");}	}
    }
    
  7. 设计一个 Dog 类,有名字、颜色和年龄属性,定义输出方法 show() 显示其信息并创建对象,进行测试、【提示 this.属性】。

    public class Chapter7{public static void main(String[] args){Dog m = new Dog("二哈", "黄色", 1);m.show();}
    }
    class Dog{String name;String color;int age;public Dog(String name, String color, int age){this.name = name;this.color = color;this.age = age;}public void show(){System.out.print("名字:" + name + "\t");System.out.print("颜色:" + color + "\t");	System.out.print("年龄:" + age + "\n");			}
    }
    
  8. 给定一个 Java 程序的代码如下所示,则编译运行后,输出结果是 (10,9,10)

在这里插入图片描述

题目中:new Test().count1();中的 new Test() 是匿名对象。使用后就不能使用,故只能使用一次!
  1. 定义 Music 类,里面有音乐名 name、音乐时长 times 属性,并有播放 play 功能和返回本身属性信息的功能方法 getlnfo。

    public class Chapter7{public static void main(String[] args){Music m = new Music("枕着光的她", 1.0);m.play();m.getInfo();}
    }
    class Music{String name;double times;public Music(String name, double times){this.name = name;this.times = times;}public void play(){System.out.println("音乐 " + name + " 正在播放中...... 播放时长为: " + times + "分钟。");}public void getInfo(){System.out.print("名字:" + name + "\t");System.out.println("时长:" + times + "h");		}
    }
    
  2. 试写出以下代码的运行结果 (101 100;101 101)

在这里插入图片描述

  1. 在测试方法中,调用 method 方法,代码如下,编译正确,试写出 method 方法的定义形式,调用语句为:System.out.println(method(method(10.0,20.0),100);

    public class Chapter7{public static void main(String[] args){A11 m = new A11(1.0, 2.0);m.getInfo();}
    }
    class A11{double num1;double num2;public A11(double num1, double num2){this.num1 = num1;this.num2 = num2;}public double method(double num1, double num2){return (num1 + num2);}public void getInfo(){System.out.print(method(method(10.0,20.0),100));}
    }
    
  2. 创建一个 Employee 类,属性有(名字,性别,年龄,职位,薪水),提供 3 个构造方法,可以初始化

    (1) (名字,性别,年龄,职位,薪水)

    (2) (名字,性别,年龄)

    (3) (职位,薪水)

    要求充分复用构造器。

    public class Chapter7{public static void main(String[] args){Employee m1 = new Employee("张三", '男', 18, "主任", 10000.0);m1.getInfo();Employee m2 = new Employee("张三", '男', 18);m2.getInfo();Employee m3 = new Employee("主任", 10000.0);m3.getInfo();}
    }
    class Employee{String name;char sex;int age;String job;double salary;public Employee(String name, char sex, int age){this.name = name;this.sex = sex;this.age = age;}public Employee(String job, double salary){this.job = job;this.salary = salary;}public Employee(String name, char sex, int age, String job, double salary){this(name, sex, age);//使用前面的构造器,对this的调用必须是构造器的第一个语句。this.job = job;this.salary = salary;}public void getInfo(){System.out.println("name:" + name);System.out.println("sex:" + sex);System.out.println("age:" + age);System.out.println("job:" + job);System.out.println("salary:" + salary);System.out.println("--------------------");}
    }
    
  3. 将对象作为参数传递给方法。

    题目要求:

    (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() 方法,调用完毕后输出当前半径值。程序运行结果如图所示
    在这里插入图片描述

    public class Chapter7{public static void main(String[] args){Circle m = new Circle(1.0);PassObject m1 = new PassObject();m1.printAreas(m, 5);}
    }
    class Circle{double radius;public Circle(double radius){this.radius = radius;}public double findArea(){return Math.PI * radius * radius;}	
    }
    class PassObject{public void printAreas(Circle c, int times){System.out.println("圆的半径:\t圆的面积:");for(int i = 1; i <= times; i++){c.radius = i;System.out.print(c.radius + "\t\t");System.out.print(c.findArea());System.out.println();}}	
    }
    
  4. 有个人 Tom 设计他的成员变量。成员方法, 可以电脑猜拳电脑每次都会随机生成 0,1,2

    0 表示石头,1 表示剪刀,2 表示布

    并要可以显示 Tom 的输赢次数 (清单)
    在这里插入图片描述

import java.util.Scanner;
public class Chapter7{public static void main(String[] args){Tom m = new Tom();m.menu();}
}
class Tom{public int Guess(){return (int) (Math.random() * 3); // 生成范围在 0 到 2 之间的随机整数}public void menu(){int n = 0;Scanner myScanner = new Scanner(System.in);System.out.println("*******现在进行石头剪刀步游戏:(三局两胜)********");for(int i = 0; i < 3; i++){System.out.println("请输入石头/剪刀/步,注意:0 表示石头,1 表示剪刀,2 表示布");int num1 = myScanner.nextInt();int p = Guess();if(p == 0 && num1 == 2 || p == 1 && num1 == 0 || p == 2 && num1 == 1){n++;}System.out.println("机器出的是:" + p + "\t您出的是:" + num1);}System.out.println("三次猜拳,您赢了" + n + "次!");if(n >= 2){System.out.println("游戏获胜啦!!!");}else{System.out.println("游戏失败。。。");}}	
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/23549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql8安装教程与配置(超详细图文)

MySQL 8.0 是 MySQL 数据库的一个重大更新版本&#xff0c;它引入了许多新特性和改进&#xff0c;旨在提高性能、安全性和易用性。 1.下载MySQL 安装包 注&#xff1a;本文使用的是压缩版进行安装。 &#xff08;1&#xff09;从网盘下载安装文件 点击此处直接下载 &#…

JavaWeb3 Ajax+Axios+Element+Nginx部署

Ajax 异步JS和XML 1.数据交换&#xff1a;给服务器发送请求&#xff0c;并获取服务器相应的数据 2.异步交互&#xff1a;在不重新加载整个页面的情况下&#xff0c;与服务器交换数据并更新部分网页 同步与异步 原生Ajax <!DOCTYPE html> <html> <body><…

Android——热点开关演讲稿

SoftAP打开与关闭 目录 1.三个名词的解释以及关系 Tethering——网络共享&#xff0c;WiFi热点、蓝牙、USB SoftAp——热点(无线接入点)&#xff0c;临时接入点 Hostapd——Hostapd是用于Linux系统的软件&#xff0c;&#xff0c;支持多种无线认证和加密协议&#xff0c;将任…

Java集合的迭代操作,Set Map接口以及工具类方法

1、集合元素迭代 1.1 集合元素遍历 集合的遍历&#xff1a;把集合中的每一个元素获取出来 使用for遍历 使用迭代器遍历 Iterator表示迭代器对象&#xff0c;迭代器中拥有一个指针&#xff0c;默认指向第一个元素之前&#xff0c; . boolean hasNext()&#xff1a;判断指针后是…

任务3.7 开发名片管理系统

本实战项目以Java语言为基础&#xff0c;精心打造了一个功能全面的名片管理系统。系统采用面向对象的设计原则&#xff0c;通过Card类来封装每张名片的详细信息&#xff0c;如姓名、单位、职位和联系电话等&#xff0c;并提供了标准的访问器和修改器方法以确保数据的安全访问。…

ROS学习记录:自定义消息类型

前言 当我们需要传输一些特殊的数据时&#xff0c;且官方的消息包无法满足需求&#xff0c;我们便可以自己定义一个消息类型。 实验步骤 一、在终端输入cd ~/catkin_ws1/src进入工作空间中src目录 二、输入catkin_create_pkg qq_msgs roscpp rospy std_msgs message_generati…

windows10子系统wsl ubuntu22.04下GN/ninja环境搭建

打开windows10子系统 ubuntu22.04 ubuntu22.04: 首先需要 安装ninja $sudo apt install ninja-build $ ninja --version 1.10.0 安装clang $sudo apt install clang $clang --version Ubuntu clang version 14.0.0-1ubuntu1.1安装gn Github: https://github.com/timniederh…

SDXL终于有了足够好的 Openpose 和 Scribble 模型可以使用了。

SDXL终于有了足够好的 Openpose 和 Scribble 模型可以使用了。 xinsir 发布的Openpose 和 Scribble 模型质量相当好&#xff0c;尤其是 Openpose。不过只支持姿态不支持面部。 再加上前几天的 Anyline 线条预处理器和 Canny 模型。SDXL 的生态在发布快一年的时候成熟了。 模…

太阳能语音警示杆在户外的应用及其作用

一、太阳能语音警示杆的主要应用领域 交通管理&#xff1a;在城市道路、乡村公路、高速公路等交通要道&#xff0c;太阳能语音警示杆可以用于提醒驾驶员注意前方路况、减速慢行或者避让施工区域。例如&#xff0c;在临时施工路段&#xff0c;警示杆可以播放“前方施工&#xf…

Orange Pi AI Pro 开箱 记录

香橙派 AIpro&#xff08;OrangePi AIpro&#xff09;是一款面向AI开发的强大开发板&#xff0c;提供了高性能和多功能的开发环境。我将结合自己的开发经验&#xff0c;详细介绍这款开发板的性能、适用场景及使用体验。 一、产品概述 香橙派 AIpro配备了强大的硬件配置&#…

详解 Flink 的运行架构

一、组件 1. JobManager 作业管理器是一个 Flink 集群中任务管理和调度的核心&#xff0c;是控制应用执行的主进程 1.1 JobMaster JobMaster 是 JobManager 中最核心的组件&#xff0c;负责处理单独的作业&#xff08;Job&#xff09;。JobMaster 和具体的 Job 是一一对应的&…

通过 SFP 接口实现千兆光纤以太网通信4

Tri Mode Ethernet MAC 与 1G/2.5G Ethernet PCS/PMA or SGMII 的连接 在设计中&#xff0c;需要将 Tri Mode Ethernet MAC 与 1G/2.5G Ethernet PCS/PMA or SGMII 之间通过 GMII 接口互联。Tri Mode Ethernet MAC IP 核的工作时钟源为 1G/2.5G Ethernet PCS/PMA or SGMII …

今日增长工具精选| 8个SaaS出海必备运营工具

一、SurveyMonkey 是一个灵活、方便、经济实惠的在线调查工具&#xff0c;可以通过自行设计定制化问卷&#xff0c;开展消费者调研&#xff0c;收集第一手数据&#xff0c;获取用户反馈。 客户涵盖财富100强公司以及其他不同规模和类型的组织&#xff0c;如公司、学术研究机构…

伯克希尔·哈撒韦:“股神”的“登神长阶”

股价跳水大家见过不少&#xff0c;但一秒跌掉62万美元的你见过吗&#xff1f; 今天我们来聊聊“股市”巴菲特的公司——伯克希尔哈撒韦 最近&#xff0c;由于纽交所技术故障&#xff0c;伯克希尔哈撒韦A类股股价上演一秒归“零”&#xff0c;从超过62万美元跌成185.1美元&…

关于main函数参数列表的那些事

写在最前面&#xff1a; 本篇博客所写代码&#xff0c;全部都依赖于Linux环境。 在开始之前&#xff0c;我们先问自己几个问题&#xff1a; main函数可以传参吗?如果main函数可以传参&#xff0c;最多可以传几个参数。main函数传递的参数具体作用是什么&#xff1f; 一.是否…

C++之类与类之间的关系

1、UML 2、继承&#xff08;泛化&#xff09; 3、关联 一个类对象与另一个类对象存在一个固定关系。他们的关系不是暂时的&#xff0c;而是固定的。 一个类对象作为另一个类对象的成员。例如订单&#xff0c;是用户的一个成员。用户关联订单。 4、聚合 聚合其实是特殊的一种…

中国新闻网怎么投稿 新闻稿件文章如何发布到中国新闻网上,附中国新闻网价格明细

中国新闻网是中国最具影响力和权威性的新闻门户网站之一。作为广大作者和媒体从业者&#xff0c;怎样向中国新闻网投稿一直是一个备受关注的话题。在这篇文章中&#xff0c;我们将着重介绍媒介库网发稿平台&#xff0c;并分享如何在该平台上成功投稿至中国新闻网。 媒介库网发稿…

IDEA 2022

介绍 【尚硅谷IDEA安装idea实战教程&#xff08;百万播放&#xff0c;新版来袭&#xff09;】 jetbrains 中文官网 IDEA 官网 IDEA 从 IDEA 2022.1 版本开始支持 JDK 17&#xff0c;也就是说如果想要使用 JDK 17&#xff0c;那么就要下载 IDEA 2022.1 或之后的版本。 公司…

C语言.数据结构.双向链表

数据结构.双向链表 1.双向链表的结构1.1链表的简单介绍1.2图文分析 2.实现双向链表2.1链表的初始化2.1.1初始化2.1.2节点的申请 2.2链表的打印2.2.1代码实现2.2.2图文分析 2.3链表的尾插2.3.1代码实现2.3.2图文分析 2.4链表的头插2.4.1代码实现2.4.2图文分析 2.5链表的尾删2.5.…