当前位置: 首页 > news >正文

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("游戏失败。。。");}}	
}

相关文章:

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

类与对象练习题 编写类 A01&#xff0c;定义方法 max&#xff0c;实现求某个 double 数组的最大值&#xff0c;并返回。 public class Chapter7{public static void main(String[] args){A01 m new A01();double[] doubleArray null;Double res m.max(doubleArray);if(res !…...

Flask的模块化实践

既作为前端&#xff0c;又作为后端的我&#xff0c;写flask写了那么多行了&#xff0c;其实它们属于不同的模块&#xff0c;比如登录&#xff0c;注册&#xff0c;聊天&#xff0c;用户画像&#xff0c;那我觉得有必要分一下了&#xff0c;系统化的处理一下&#xff0c;不然找个…...

锁存器(Latch)的产生与特点

Latch 是什么 Latch 其实就是锁存器&#xff0c;是一种在异步电路系统中&#xff0c;对输入信号电平敏感的单元&#xff0c;用来存储信息。锁存器在数据未锁存时&#xff0c;输出端的信号随输入信号变化&#xff0c;就像信号通过一个缓冲器&#xff0c;一旦锁存信号有效&#…...

搜维尔科技:「案例」Faceware电影中面部动画的演变历程

面部动画是电影中角色表演的一个重要方面&#xff0c;尤其是在严重依赖电子动画、化妆效果和动作捕捉系统的奇幻电影中。在《龙与地下城&#xff1a;盗贼荣誉》电影中&#xff0c;龙裔角色的面部动画是一个复杂的系统&#xff0c;使该生物在大屏幕上栩栩如生。该系统依赖于一种…...

特征工程技巧—Bert

前段时间在参加比赛&#xff0c;发现有一些比赛上公开的代码&#xff0c;其中的数据预处理步骤值得我们参考。 平常我们见到的都是数据预处理&#xff0c;现在我们来讲一下特征工程跟数据预处理的区别。 数据预处理是指对原始数据进行清洗、转换、缩放等操作&#xff0c;以便为…...

更改 Docker 的默认存储位置

记录一下使用 Docker 遇到的问题&#xff0c;Docker 也用得比较多&#xff0c;最近发现根目录所在磁盘快满了&#xff0c;发现是 Docker 默认会将镜像和容器等数据保存在目录 /var/lib/docker 目录下&#xff0c;我们可以更改 Docker 的默认存储位置&#xff0c;比如改到数据盘…...

搜索与图论:图中点的层次

搜索与图论&#xff1a;图中点的层次 题目描述参考代码 题目描述 输入样例 4 5 1 2 2 3 3 4 1 3 1 4输出样例 1参考代码 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 100010;int n, m; int h[N], e[N]…...

NLP入门——数据预处理:编码规范化

编码规范化 在计算机中&#xff0c;我们需要将字符与字节序列之间建立起映射关系&#xff0c;这个过程被称为编码。有许多不同的编码方式&#xff0c;例如 ASCII、UTF-8、UTF-16 和 GBK 等。这些编码方式会将每个字符编码为一个或多个字节&#xff0c;以便于在计算机、网络和其…...

代码随想录算法训练营第四十八天| 70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

70. 爬楼梯 &#xff08;进阶&#xff09; 题目链接&#xff1a;70. 爬楼梯 &#xff08;进阶&#xff09; 文档讲解&#xff1a;代码随想录/爬楼梯 &#xff08;进阶&#xff09; 状态&#xff1a;已完成&#xff08;0遍&#xff09; 解题过程 这几天博主忙着面试和入职&am…...

c++11 constexpr关键字

constexpr 是 C11 引入的一个关键字&#xff0c;它允许在编译时计算表达式的值&#xff0c;并将这些值存储在程序的常量部分中。这意味着 constexpr 变量和函数可以在编译时进行求值&#xff0c;从而避免了运行时的开销。 constexpr变量 constexpr 变量必须在编译时初始化&am…...

ios 获取图片的一部分区域

可以使用如下的代码&#xff1a; // get part of the image - (UIImage *)getPartOfImage:(UIImage *)img rect:(CGRect)partRect {CGImageRef imageRef img.CGImage;CGImageRef imagePartRef CGImageCreateWithImageInRect(imageRef, partRect);UIImage *retImg [UIImage i…...

数据结构(3)栈、队列、数组

1 栈 1.1 栈的定义 后进先出【LIFO】 1.2 基本操作 元素进栈出栈 只能在栈顶进行&#xff01;&#xff01;&#xff01; 经常考的题&#xff1a; 穿插的进行进栈和出栈 可能有多个选项 1.3 顺序栈 1.3.1 初始化 下标是从0开始的 1.3.2 进栈 更简单的写法&#xff1a; 1.3…...

数据库(入门)

文章目录 一、数据库(DB) 二、数据库管理系统&#xff08;DBMS&#xff09; 三、SQL&#xff08;结构化查询语言&#xff09; 四、三者的关系 五、端口号&#xff08;port number&#xff09; 一、数据库(DB) 定义&#xff1a;按照一定格式存储数据的一些文件的组合。 简单来…...

ChatTTS+Python编程搞定语音报时小程序

文字转语音神器Python编程搞定语音报时小程序 今天一个好哥们发了一个文字转语音的AI神器的短视频。这个神器的网站是[ChatTTS - Text-to-Speech for Conversational Scenarios][https://chattts.com/]&#xff0c;如下图所示&#xff1a; 这个开源项目可以从github.com上下载…...

【Mac】Alfred 5 for Mac(苹果效率提升工具)v5.5软件介绍及安装教程

软件介绍 Alfred 是适用于 Mac 操作系统的流行生产力应用程序。它旨在帮助用户在 Mac 电脑上更高效地启动应用程序、搜索文件和文件夹以及执行各种任务。借助 Alfred&#xff0c;用户可以创建自定义键盘快捷方式、设置自定义工作流程并使用热键访问功能。 Alfred for Mac 的一…...

PDF文件处理不再复杂:9个Python库让一切变得简单

大家好&#xff0c;这里是程序员晚枫&#xff0c;2年前发布了一个开源项目&#xff1a;python-office&#xff0c;目前在GitHub上有800⭐&#xff0c;最近在开发新功能时感觉Python知识有点不够用了。 所以打算从2方面补充自己的知识&#xff1a;研究优秀的第三方库和学习Pyth…...

安防视频融合汇聚平台EasyCVR如何实现视频画面自定义标签?

安防视频融合汇聚平台EasyCVR兼容性强&#xff0c;可支持Windows系统、Linux系统以及国产化操作系统等&#xff0c;平台既具备传统安防视频监控的能力&#xff0c;也具备接入AI智能分析的能力&#xff0c;可拓展性强、视频能力灵活&#xff0c;能对外分发RTMP、RTSP、HTTP-FLV、…...

Liunx音频

一. echo -e "\a" echo 通过向控制台喇叭设备发送字符来发声&#xff1a; echo -e "\a"&#xff08;这里的 -e 选项允许解释反斜杠转义的字符&#xff0c;而 \a 是一个响铃(bell)字符&#xff09; 二. beep 下载对应的包 yum -y install beep 发声命令 be…...

2024前端面试准备3-JS异步-进阶

1.请描述Event loop&#xff08;事件循环&#xff09;的机制。 JS是单线程的&#xff0c;异步需要基于毁掉来实现&#xff0c;event loop 就是异步回调的实现原理。 同步代码&#xff0c;一行一行放在Call Stack执行&#xff0c;遇到异步任务&#xff0c;标记一下让其他线程去处…...

lm studio 0.2.24国内下载模型

1.修改C:\Users\Admin\AppData\Local\LM-Studio\app-0.2.24\resources\app\.webpack\main中的3个js文件&#xff1a; index.js llmworker.js worker.js 中替换huggingface.co为hf-mirror.com。这样就能实现搜索模型文件 2.点击模型&#xff0c;选择下载&#xff0c;出现下载…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...