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.rhkb.cn/news/342542.html

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

相关文章

【Qt知识】disconnect

在Qt框架中&#xff0c;disconnect函数用于断开信号与槽之间的连接。当不再需要某个信号触发特定槽函数时&#xff0c;或者为了防止内存泄漏和重复执行问题&#xff0c;你可以使用disconnect来取消这种关联。disconnect函数的基本用法可以根据不同的需求采用多种形式&#xff0…

【Python学习1】matplotlib和pandas库绘制人口数变化曲线

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; 一、Python库说明 Matplotlib Matplotlib是一个功能强大的Python 2D绘图库&#xff0c;它允…

【Linux网络】传输层协议 - UDP

文章目录 一、传输层&#xff08;运输层&#xff09;运输层的特点复用和分用再谈端口号端口号范围划分认识知名端口号&#xff08;Well-Know Port Number&#xff09;两个问题① 一个进程是否可以绑定多个端口号&#xff1f;② 一个端口号是否可以被多个进程绑定&#xff1f; n…

最大的游戏交流社区Steam服务器意外宕机 玩家服务受影响

易采游戏网6月3日消息&#xff1a;众多Steam游戏玩家报告称&#xff0c;他们无法访问Steam平台上的个人资料、好友列表和社区市场等服务。同时&#xff0c;社区的讨论功能也无法正常使用。经过第三方网站SteamDB的确认&#xff0c;&#xff0c;这一现象是由于Steam社区服务器突…

德国西门子论未来质量管理 - 如何与明天相遇?

未来制造业的质量 -- 如何用软件方案满足质量要求 作者&#xff1a;Bill Butcher 翻译&编辑&#xff1a;数字化营销工兵 【前言】在Frost&Sullivan最近发表的一份白皮书中&#xff0c;他们讨论了制造业的质量投资。质量是制造过程的关键要素&#xff0c;但似乎比其他…

《精通ChatGPT:从入门到大师的Prompt指南》大纲目录

第一部分&#xff1a;入门指南 第1章&#xff1a;认识ChatGPT 1.1 ChatGPT是什么 1.2 ChatGPT的应用领域 1.3 为什么需要了解Prompt 第2章&#xff1a;Prompt的基本概念 2.1 什么是Prompt 2.2 好Prompt的特征 2.3 常见的Prompt类型 第二部分&#xff1a;Prompt设计技巧 第…

MySQL报ERROR 2002 (HY000)解决

今天在连接客户服务器时MySQL的时候报: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql/mysql.sock’ (2) [rootXXX ~]# mysql -uroot -p Enter password: ERROR 2002 (HY000): Can’t connect to local MySQL server through socket…

【高校科研前沿】新疆生地所陈亚宁研究员团队在GeoSus发文:在1.5°C和2°C全球升温情景下,中亚地区暴露于极端降水的人口增加

目录 文章简介 1.研究内容 2.相关图件 3.文章引用 文章简介 论文名称&#xff1a;Increased population exposures to extreme precipitation in Central Asia under 1.5 ◦C and 2 ◦C global warming scenarios&#xff08;在1.5C和2C全球变暖情景下&#xff0c;中亚地区…

服务器硬件基础知识学习

服务器硬件基础知识涵盖了从CPU到存储&#xff0c;再到网络连接和总线技术等关键组件。 1. 处理器 - 两大流派&#xff1a;我们常用的处理器主要分为Intel和AMD两大阵营。Intel的Xeon系列和AMD的EPYC系列都是专为服务器设计的&#xff0c;它们支持多核处理&#xff0c;能够应对…

【ARFoundation自学05】人脸追踪(AR Face manager)实现

1. 修改摄像机朝向渲染方式-选中user 这个方式就会调用前置摄像头 2 创建 AR Session、XR Origin&#xff0c;然后在XR Origin上面添加组件 注意&#xff1a;XR Origin 老版本仍然叫 AR Session Origin 接下来在XR Origin上面添加AR Face Manager组件&#xff0c;如下图&am…

【算法速查】万字图解带你快速入门八大排序(下)

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;首先在这里祝大家中秋国庆双节同乐&#xff01;&#xff01;抓住假期的小尾巴&#xff0c;今天来把算法速查的八大排序的后续写完&#xff0c;当…

【数据结构】C语言实现二叉树的基本操作——二叉树的遍历(先序遍历、中序遍历、后序遍历)

C语言实现二叉树的基本操作 导读一、二叉树的遍历二、先序遍历三、中序遍历四、后序遍历五、结点序列六、递归算法与非递归算法的转化结语 导读 大家好&#xff0c;很高兴又和大家见面啦&#xff01;&#xff01;&#xff01; 通过前面的介绍&#xff0c;我们已经认识了二叉树…

一文搞懂常见的数据拆分方案

常见的几种数据拆分方案 1、客户端分片 直接在应用层实现读取分片规则&#xff0c;解析规则&#xff0c;根据规则实现切分逻辑。 这种方案优缺点&#xff1a; 侵入业务(缺点)&#xff1b; 实现简单&#xff0c;适合快速上线&#xff0c;容易定位问题&#xff1b; 对开发人员…

QT 信号和槽 一对多关联示例,一个信号,多个槽函数响应,一个信号源如何绑定多个槽函数

在窗体里放置一个单行文本编辑控件&#xff08;QLineEdit&#xff09;、一个标签控件&#xff08;QLabel&#xff09;和一个文本浏览控件&#xff08;QTextBrowser&#xff09;&#xff0c;在单行文 本编辑控件里的文本被编辑时&#xff0c;标签控件和文本浏览控件都会同步显示…

Polar Web 【简单】- 被黑掉的站

Polar Web 【简单】- 被黑掉的站 Contents Polar Web 【简单】- 被黑掉的站思路EXP运行&总结 思路 如题目所述&#xff0c;这是一个被黑掉的站点&#xff0c;由此不禁要了解该黑客发现了哪些可以入手的路径&#xff0c;或是留下了什么样的文件供持续访问。 目录扫描该站点发…

前端工程化工具系列(九)—— mddir(v1.1.1):自动生成文件目录结构工具

mddir 是一个基于项目目录结构动态生成 Markdown 格式目录结构的工具&#xff0c;方便开发者在文档中展示文件和文件夹的组织结构。 1. 安装 全局安装改工具&#xff0c;方便用于各个项目。 pnpm i -g mddir2. 使用 在想要生成目录接口的项目内打开命令行工具&#xff0c;输…

【vue3+pinia+uniapp项目问题:使用pinia状态管理时store的数据更新,模板渲染视图不能实时更新】

在这里选择不同的学校后&#xff0c;发现store里面的数据打印出来能更新&#xff0c;但是使用store的数据打印出来并未实时更新且渲染在模板上&#xff0c;必须手动刷新视图才能更新。 原因是因为使用了解构赋值传入参数 解决方法 1.使用computed 现在视图能进行实时更新…

【机器学习】GLM4-9B-Chat大模型/GLM-4V-9B多模态大模型概述、原理及推理实战

​​​​​​​ 目录 一、引言 二、模型简介 2.1 GLM4-9B 模型概述 2.2 GLM4-9B 模型架构 三、模型推理 3.1 GLM4-9B-Chat 语言模型 3.1.1 model.generate 3.1.2 model.chat 3.2 GLM-4V-9B 多模态模型 3.2.1 多模态模型概述 3.2.2 多模态模型实践 四、总结 一、引言…

各平台对象存储

一、阿里云对象存储 官方文档&#xff1a;https://help.aliyun.com/zh/oss/getting-started/getting-started-with-oss?spma2c4g.11186623.0.0.299a646c6nWWcW 1.引入maven 官网&#xff1a;https://help.aliyun.com/zh/oss/developer-reference/java-installation?spma2c…

【代码随想录】【算法训练营】【第30天】 [322]重新安排行程 [51]N皇后 [37]解数独

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 30&#xff0c;周四&#xff0c;好难&#xff0c;会不了一点~ 题目详情 [322] 重新安排行程 题目描述 322 重新安排行程 解题思路 前提&#xff1a;…… 思路&#xff1a;回溯。 重点&…