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 是一个包装类返回值是double
    		if(doubleArray != null && doubleArray.length > 0){ //先判断数组是否空,再判断数组长度是否大于0
    			double 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.mfbz.cn/a/685402.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何通俗易懂地理解大模型参数?

大型语言模型 (LLM) 的大小是通过参数数量来衡量的。举几个典型例子&#xff0c;GPT-3 有 1750 亿个参数&#xff0c;1750亿也可称为175B&#xff08;1B 10亿&#xff09;&#xff0c;Meta最新开源的Llama3 参数数量在 80 亿到 700 亿之间&#xff0c;智谱公司最新开源的GLM4-…

龙叔Linux:别名(alias)

在Linux中&#xff0c;别名&#xff08;alias&#xff09;是一个命令的简短形式&#xff0c;通常用于简化或替换更长的命令序列。你可以使用alias命令来创建、查看和删除别名&#xff0c;定制自己专属的命令。一、创建别名 1.1、临时创建 你可以使用alias命令在命令行中直接定…

【MySQL】数据库入门基础

文章目录 一、数据库的概念1. 什么是数据库2. 主流数据库3. mysql和mysqld的区别 二、MySQL基本使用1. 安装MySQL服务器在 CentOS 上安装 MySQL 服务器在 Ubuntu 上安装 MySQL 服务器验证安装 2. 服务器管理启动服务器查看服务器连接服务器停止服务器重启服务器 3. 服务器&…

web刷题记录(4)

[GKCTF 2020]cve版签到 进来应该是给了个提示了&#xff0c;就是要以.ctfhub.com结尾 还有一个超链接&#xff0c;这题的ssrf还是挺明显的&#xff0c;抓包看看 发现回显里面有提示 说是和本地有关&#xff0c;那么也就是说&#xff0c;要访问127.0.0.1&#xff0c;大概意思就…

搜索与图论:树的重心

搜索与图论&#xff1a;树的重心 题目描述参考代码 题目描述 输入样例 9 1 2 1 7 1 4 2 8 2 5 4 3 3 9 4 6输出样例 4参考代码 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 100010, M N * 2;int n, m…

2024 Q1企业级SSD市场暴涨,国产努力追赶!

在2024年第一季度&#xff0c;由于对高容量存储需求的激增&#xff0c;企业级固态硬盘&#xff08;SSD&#xff09;市场的收入实现了显著增长&#xff0c;达到了37.58亿美元&#xff0c;与上一季度相比增长了62.9%。这一增长主要得益于供应商减产导致的高容量订单需求未得到满足…

【WP】猿人学_17_天杀的Http2.0

https://match.yuanrenxue.cn/match/17 抓包分析 居然对Fiddler有检测&#xff0c;不允许使用 那就使用浏览器抓包&#xff0c;好像没发现什么加密参数&#xff0c;然后重放也可以成功&#xff0c;时间长了也无需刷新页面&#xff0c;尝试Python复现。 Python复现 import …

SVM模型实现城镇居民月平均消费数据分类

SVM模型实现城镇居民月平均消费数据分类 一、SVM支持向量机简介二、数据集介绍三、SVM建模流程及分析一、SVM支持向量机简介 支持向量机是由感知机发展而来的机器学习算法,属于监督学习算法。支持向量机具有完备的理论基础,算法通过对样本进行求解,得到最大边距的超平面,并…

Activity->Activity中动态添加Fragment->Fragment回退栈BackStack

Fragment回退栈 Fragment回退栈用于管理Fragment的导航历史(添加、删除、替换)。每个Activity都有一个包含其所有Fragment的FragmentManager&#xff0c;调用其addToBackStack方法时&#xff0c;这个事务就会被添加到FragmentManager的回退栈中当用户按下返回键时&#xff0c;…

跑图像生成模型GAN时,遇到OSError: cannot open resource 报错解决办法

报错信息如下&#xff1a; Traceback (most recent call last): File "/root/autodl-tmp/ssa-gan/pretrain_DAMSM.py", line 276, in <module> count train(dataloader, image_encoder, text_encoder, File "/root/autodl-tmp/ssa-gan/pretrain_DAMSM.py…

三十九、openlayers官网示例Extent Interaction解析——在地图上绘制范围并获取数据

官网demo 地址&#xff1a; Extent Interaction 在openlayers中可以使用ExtentInteraction添加交互事件&#xff0c;配合shiftKeyOnly实现按住shift键绘制边界区域。 const map new Map({layers: [new TileLayer({source: new OSM(),}),],target: "map",view: new …

LeetCode 算法:合并区间c++

原题链接&#x1f517;&#xff1a;合并区间 难度&#xff1a;中等⭐️⭐️ 题目 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰…

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

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

C++基础编程100题-025 OpenJudge-1.4-05 整数大小比较

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0104/05/ 描述 输入两个整数&#xff0c;比较它们的大小。 输入 一行&#xff0c;包含两个整数x和y&#xff0c;中间用单个空格隔开。 0 < x < 2^32, -2^31 < y < 2^31。 输出 一个字符。 若x &…

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

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

DP读书:如何使用badge?(开源项目下的标咋用)

最近在冲论坛&#xff0c;很少更一些内容了。但遇到了一个真的有趣的&#xff1a; 开源项目下&#xff0c;蓝蓝绿绿的标是怎么用的呢&#xff1f; 这是我的主页Readme&#xff0c;在看一些NXP的主仓时&#xff0c;突然发现没有这个玩&#xff0c;就自己整了个 再比如我的CSDN专…

【stm32/CubeMX、HAL库】swjtu嵌入式实验七 ADC 实验

相关电路与IO引脚 注意&#xff1a;串口打印重定向后使用printf打印需要在keil里勾选 Use MicroLIB &#xff0c;否则会卡住。 参看&#xff1a;https://zhuanlan.zhihu.com/p/565613666 串口重定向&#xff1a; /* USER CODE BEGIN Includes */#include <stdio.h>//…

利用opencv-python实现图像全景拼接技术实现

这个代码的主要功能是将多张图像拼接成一张全景图。它使用了OpenCV库中的SIFT特征提取、特征匹配和图像变换等技术来实现图像拼接。 一、预览效果 二、安装依赖 contourpy1.2.1 cycler0.12.1 fonttools4.53.0 importlib_resources6.4.0 kiwisolver1.4.5 matplotlib3.9.0 numpy…

保姆级讲解 FTP服务器的配置与管理

本来目录很长的 因为感觉不太美观 所以小标题都删掉了 本文介绍了 本地用户的FTP服务器搭建实例匿名用户的FTP服务器搭建实例虚拟用户的FTP服务器搭建实例企业常见类型搭建实验 配置与管理FTP服务器 配置与管理FTP服务器一、FTP相关知识二、项目设计与准备三、项目实施四、认识…

大语言模型 (LLM) 窥探未来

随着2023年的岁月渐渐走向尾声&#xff0c;我们站在人工智能的前沿&#xff0c;回望大语言模型&#xff08;Large Language Models, LLM&#xff09;所走过的道路&#xff0c;同时也不禁展望未来。从初步尝试到成为人工智能领域的万千宠爱&#xff0c;一种又一种的技术突破&…