java类和对象相关练习,book类,person类,Rectangle类,类、Stock类,Conversion类实现公英里转换

其实Java中的类和c语言中的函数很像,学过c语言的小伙伴可以比较着来学习!

 Book类的设计

阅读测试程序,设计一个Book类。

函数接口定义:

 

class Book{}

该类有 四个私有属性 分别是 书籍名称、 价格、 作者、 出版年份,以及相应的set 与get方法;该类有一个含有四个参数的构造方法,这四个参数依次是书籍名称、 价格、 作者、 出版年份 。

裁判测试程序样例:

 

import java.util.*;
public class Main {
    public static void main(String[] args) {
        List <Book>books=new ArrayList<Book>();
        Scanner in=new Scanner(System.in);
        for(int i=0;i<5;i++)
        {    String str=in.nextLine();
            String []data=str.split(",");
            Book book=new Book(data[0],Integer.parseInt(data[1]),data[2],Integer.parseInt(data[3]));
            books.add(book);
        }
        
        System.out.println(totalprice(books));    
    }
    
    /*计算所有book的总价*/
    public static int totalprice(List <Book>books) 
    {  int result=0;
        for(int i=0;i<books.size();i++){result+=books.get(i).getPrice();}
        return result;
    }
}

/* 请在这里填写答案 */

输入样例:

三体,100,无名氏,1998
上下五千年,50,编辑部,2015
海底世界,50,无名氏2,2000
三体1,100,无名氏3,2017
三体3,100,无名氏4,1998

输出样例:

400

以下是代码详解! 

class Book
{
    private String name;
    private int price;
    private String author;
    private int year;         //类似于c语言自己写函数时需要用到的一些变量
    Book( String name,int price,String author,int year)
    {
        this.name=name;
        this.price=price;
        this.author=author;
        this.year=year;
    }        /*这个是根据题目要求里面的这条语句来写的:Book book=new
Book(data[0],Integer.parseInt(data[1]),data[2],Integer.parseInt(data[3]));,题目要求中括号内写了几个变量,这里的括号内也写对应的变量即可*/                 
    public void setName(String name){
        this.name=name;
    }                         //建立
    public String getName(){
        return name;
    }                        //获取
     public void setPrice(int price){
        this.price=price;
     }
     public int getPrice(){
        return price;
    }
     public void setAuthor(String author){
        this.author=author;
    }
     public String getAuthor(){
        return author;
    }
    public void setYear(int year){
        this.year=year;
     }
     public int getYear(){
        return year;
    }
}

 这里简单介绍一下this的含义

在 Java 中, this  是一个关键字,用于引用当前对象。
 
它具有以下主要用途:
 
1. 明确对象自身:在方法内部使用  this  可以明确地表示对当前对象的属性或方法的引用。
2. 解决参数命名冲突:当方法的参数名与类的成员变量名相同时,可以使用  this  来区分。
3. 在构造器中调用其他构造器:可以通过  this  关键字在一个构造器中调用其他构造器。

 Person类

构造Person类。包括姓名(name),性别(sex)和年龄(age)。提供所有属性的set和get函数,提供print函数打印其信息

输入描述:

姓名(name),性别(sex)和年龄(age)

输出描述:

用户信息

裁判测试程序样例:

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);      
         String name = scan.next();      
         String sex = scan.next();      
         int age = scan.nextInt();
         Person p = new Person();
         p.setName(name);
         p.setSex(sex);
         p.setAge(age);
         p.print();
         scan.close(); 
    }
}

/* 你的代码被嵌在这里 */

输入样例:

在这里给出一组输入。例如:

Lucy male 23

输出样例:

在这里给出相应的输出。例如:

name:Lucy; sex:male; age:23

 其实本题主要要求我们写出一个打印函数

class Person
{
    private String name;
    private String sex;
    private int age;
    Person()   //Person p = new Person();这是原题的语句,通过上一个题,大家都知道原因了吧,
    {          //虽然没有参数,但是不能省略这条语句
}
    public void setName(String name)
    {
        this.name=name;
    }
    public String getName()
    {
        return name;
    }
    public void setSex(String sex)
    {
        this.sex=sex;
    }
    public String getSex()
    {
        return sex;
    }
    public void setAge(int age)
    {
        this.age=age;
    }
    public int getAge()
    {
        return age;
    }
    public void print()
    {
        System.out.print("name:"+name+"; "+"sex:"+sex+"; "+"age:"+age);
    }
}

设计一个矩形类Rectangle

设计一个名为Rectangle的类表示矩形。这个类包括:
两个名为width和height的double型数据域,它们分别表示矩形的宽和高。width和height的默认值都为1.
一个无参构造方法。
一个为width和height指定值的矩形构造方法。
一个名为getArea()的方法返回这个矩形的面积。
一个名为getPerimeter()的方法返回这个矩形的周长。

类名为:

Rectangle

裁判测试程序样例:

 
import java.util.Scanner;
/* 你的代码将被嵌入到这里 */

public class Main {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    double w = input.nextDouble();
    double h = input.nextDouble();
    Rectangle myRectangle = new Rectangle(w, h);
    System.out.println(myRectangle.getArea());
    System.out.println(myRectangle.getPerimeter());

    input.close();
  }
}

输入样例:

3.14  2.78

输出样例:

8.7292
11.84

通过以上两个例子,我们可以看出来这个题目主要就是设计函数求矩形面积和周长,以及有参和无参方法

class Rectangle
{
    double width;
    double height;
    Rectangle(){
        width=1.0;
        height=1.0;
    }                      //无参方法
    Rectangle(double newWidth,double newHeight)
    {
        width=newWidth;
        height=newHeight;
    }           //Rectangle myRectangle = new Rectangle(w, h);有参方法
    double getArea()
    {
        return width*height;
    }           //求面积
    double getPerimeter()
    {
        return 2*(width+height);
    }           //求周长
}

定义一个股票类Stock

定义一个名为Stock的股票类,这个类包括:一个名为symbol的字符串数据域表示股票代码。一个名为name的字符串数据域表示股票名称。一个名为previousClosingPrice的double数据域,它存储前一日的股票交易价格。一个名为currentPrice数据域,它存储当前的股票交易价格。创建一个有特定代码和名称的股票的构造方法。一个名为changePercent()方法返回从previousClosingPrice变化到currentPrice的百分比。
###类名为:

stock

裁判测试程序样例:

import java.util.Scanner;
/* 你提交的代码将被嵌入到这里 */

public class Main {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String symbol1=input.next();
    String name1=input.next();    
    Stock stock = new Stock(symbol1, name1);
    
    stock.previousClosingPrice = input.nextDouble();

    // Input current price
    stock.currentPrice = input.nextDouble();

    // Display stock info
    System.out.println(stock.name+"price changed: " + stock.changePercent() * 100 + "%");
    input.close();
  }
}

输入样例:

002594
比亚迪
56.98
55.40

输出样例:

比亚迪股价涨跌: -2.77290277290277%

 从previousClosingPrice变化到currentPrice的百分比其实就是用currentPrice减去previousClosingPrice的差除以previousClosingPrice。

class Stock
{
    String symbol;
    String name;
    double previousClosingPrice;
    double currentPrice;
    Stock(String newSymbol,String newName)
    {
        symbol=newSymbol;
        name=newName;
    }          // Stock stock = new Stock(symbol1, name1);有参方法
    public void setPreviousClosingPrice(double previousClosingPrice)
    {
        this.previousClosingPrice=previousClosingPrice;
    }
    public double getPreviousClosingPrice()
    {
        return previousClosingPrice;
    }
    public void setCurrentPrice(double CurrentPrice)
    {
        this.currentPrice=currentPrice;
    }
    public double getCurrentPrice()
    {
        return currentPrice;
    }                     //以上写的public都可以不用写,写在这里是方便获取
    double changePercent()
    {
        return ((currentPrice-previousClosingPrice)/previousClosingPrice); //本题关键在这
    }
}

公里英里转换

创建 Java 类Conversion,实现两个静态方法,能进行公里、英里转换。

Conversion类包括:

1个私有静态常量 N=0.621

2个公有静态方法 getMile(double k),getKilometer(double m),两个方法的返回值都是double型。

方法应实现如下功能:

getMile(double k)方法功能:将参数k保存的公里数转换成英里,并返回英里数。

getKilometer(double m)方法功能:将参数m保存的英里数转换成公里,并返回公里数。

转换规则:1 kilometre(公里) = 0.621 mile(英里)

题目这里给的很清楚,大家根据这个公式就很轻松写出相应的方法啦!

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
        //键盘输入公里数
         double a = sc.nextDouble();
        //转换为英里数并输出
         System.out.printf("%.2f ", Conversion.getMile(a));
        //键盘输入英里数
         double b = sc.nextDouble();
        //转换为公里数并输出
         System.out.printf("%.2f", Conversion.getKilometer(b));
         sc.close();
    }
}
/* 请在这里填写答案 */

输入样例:

在这里给出一组输入。例如:

10 10

输出样例:

在这里给出相应的输出。例如:

6.21 16.10

class Conversion
{
    private static final double N=0.621;
    double k;
    double m;
    Conversion(){
        
}    //无参方法,这里可以不写这条语句
    public static double getMile(double k) //转为英里
    {
        return k*N;
    }
    public static double getKilometer(double m)//转为公里
    {
        return m/N;
    }
}

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

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

相关文章

wsl2 Ubuntu子系统内存只有一半的解决办法

物理机的内存是64G&#xff0c;在wsl2安装完Ubuntu20.04后&#xff0c;输入命令&#xff1a; free -g 发现只有32G&#xff0c;原因是默认只能获得物理机一半的内存&#xff1a; WSL 中的高级设置配置 | Microsoft Learn 因此可手动修改为与物理机同等大小&#xff1a; 1&a…

如何解决DDoS攻击?群联科技做出回答。

DDoS攻击&#xff08;分布式拒绝服务攻击&#xff09;是一种恶意利用多台傀儡机协同发起大规模网络流量&#xff0c;旨在压垮目标系统或网络资源&#xff0c;使其无法正常服务的网络攻击手段。由于现代计算机和网络性能的提升&#xff0c;单点发起的DoS攻击已难以奏效&#xff…

Day01——NestJS学习之了解、安装、运行

什么是 Nest.js&#xff1f; NestJs 官方简介: Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。它利用 JavaScript 的渐进增强的能力&#xff0c;使用并完全支持 TypeScript &#xff08;仍然允许开发者使用纯 JavaScript 进行开发&#x…

数据仓库作业五:第8章 关联规则挖掘

目录 第8章 关联规则挖掘作业题 第8章 关联规则挖掘 作业题 1、设4-项集 X { a , b , c , d } X\{a,b,c,d\} X{a,b,c,d}&#xff0c;试求出由 X X X 导出的所有关联规则。 解&#xff1a; 首先生成项集的所有非空真子集。这包括&#xff1a; { a } , { b } , { c } , {…

ansible执行mysql脚本

目录 概述实践环境要求ansible yml脚本命令离线包 概述 ansible执行mysql脚本 实践 官网文档 环境要求 环境需要安装以下内容: 1.mysql客户端(安装了mysql即会有)2.安装MySQL-python (Python 2.X) 详细插件安装链接 ansible yml脚本 关键代码如下&#xff1a; # 剧本…

ROS2学习笔记(一) 基本概念

1. Node 节点 节点: 完成具体功能的模块 相关命令 #运行命令 ros2 run <package_name> <executable_name>#当前节点查询查询 ros2 node list#重映射 Remapping ros2 run <package_name> <executable_name> --ros-args --remap __node:<node_na…

KaiwuDB CTO 魏可伟:AIoT,用行业定义数据库

4月12日&#xff0c;由中国 DBA 联盟&#xff08;ACDU&#xff09;与墨天轮社区联合主办的第十三届数据技术嘉年华&#xff08;DTC 2024&#xff09;于北京盛大召开。KaiwuDB CTO 魏可伟受邀发表《智创当下&#xff0c;KaiwuDB 从多模到 AI 的探索实践》主题演讲&#xff0c;向…

Axure如何实现限制选择项数量的交互

大家经常会看到这样的功能设计&#xff1a;可以多选&#xff0c;但是限制多选。比如某招聘网站城市的选择只能选择5个。再选择第6个的时候会提示最多只能选择5项。 这个效果是我们经常会遇到的&#xff0c;在工作中也经常会遇到需要制作这样的效果。今天我们一起来看看&#xf…

Mac M3 安装Ollama和llama3,本地部署LobeChat和刘皇叔聊三国!

OllamaLobeChat&#xff0c;本地部署聊天助手 Ollama安装下载OllamaOllama常用指令和链接运行OllamaAPI 交互Ollama基于Llama 3角色扮演 LobeChat安装首先安装docker安装LobeChat的docker 镜像和运行 Ollama安装 下载Ollama 网址&#xff1a;https://ollama.com/ 支持macOS、…

产废端实时音视频监控系统在运输车辆驾驶室中的应用

实时音视频监控系统可通过在运输车辆驾驶室安装音视频摄录设备&#xff0c;实现将运输车辆内部及周围环境音视频数据通过移动网络实时回传指挥中心的功能。 前端摄录设备主要负责采集车内外的视音频信息&#xff0c;为了保障车辆及运输人员 的安全&#xff0c;应合理选择摄录设…

LeetCode 349.两个数组的交集(HashSet的使用)

给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2]示例 2&#xff1a; 输入&#xff1a;nums1 …

电商技术揭秘三十:知识产权保护浅析

电商技术揭秘相关系列文章&#xff08;上&#xff09; 相关系列文章&#xff08;中&#xff09; 电商技术揭秘二十&#xff1a;能化供应链管理 电商技术揭秘二十一:智能仓储与物流优化(上) 电商技术揭秘二十二:智能仓储与物流优化(下) 电商技术揭秘二十三&#xff1a;智能…

学习大数据的第一天

今天学习如何安装hapood安装 1.安装hapood安装 2.需要的资料 3.开始安装 1.创建目录 mkdir -p /export/server 2.进入目录下 cd /export/server/ 3.安装 安装需要的依赖 yum install gcc gcc-c make autoconf automake libtool curl lzo-devel zlib-devel openssl opens…

安装SSL证书之后还会有不安全提示怎么办?

安装SSL证书过程中如果遇到错误&#xff0c;不要慌&#xff0c;按照以下步骤进行排查和解决&#xff1a; 1. 仔细阅读错误信息&#xff1a; - 错误消息通常会明确指出问题所在&#xff0c;如证书过期、证书链不完整、域名不匹配等。记下或截图保存具体的错误代码和描述&#xf…

解锁ApplicationContext vs BeanFactory: 谁更具选择性?

目录 一、聚焦源码回顾 &#xff08;一&#xff09;源码分析和理解 &#xff08;二&#xff09;简短的回顾对比建议 二、ApplicationContext vs BeanFactory特性对比 &#xff08;一&#xff09;主要特性总结 &#xff08;二&#xff09;直接建议 三、案例简单说明 &am…

SCADA系统通过巨控GRM模块实现OPC协议远程监控PLC

SCADA系统和PLC不在同一个地方&#xff0c;需要远程监控和控制PLC&#xff0c;可以通过巨控GRM模块来实现&#xff0c;通过OPC协议转巨控服务器远程读写PLC寄存器&#xff0c;从而完成远程监控PLC。 要实现SCAKDA系统远程监控PLC&#xff0c;关键是要实现SKADA能通过互联网访问…

G1垃圾回收器

G1垃圾回收器 概述 1.Young Collection(年轻代垃圾回收) 说明&#xff1a;下图中 e代表eden区(伊甸园)&#xff0c;s代表幸存者区&#xff0c;o代表老年代 初始时&#xff0c;所有区域都处于空闲状态 创建了一些对象&#xff0c;挑出一些空闲区域作为伊甸园区存储这些对象 G1…

数据结构学习--环形链表

环形链表 我们在判断一个链表是否是环形的&#xff0c;即首尾相连&#xff0c;我们可以以使用快慢指针&#xff0c;如果快指针能再次追上慢指针&#xff0c;就说明该链表是环形的&#xff0c;这边可以举个操场跑步的例子&#xff0c;当操场是环形的&#xff0c;跑的快的&#…

Docker Compose 的安装和使用详解

Docker Compose 是 Docker 官方开源的容器编排(Orchestration)项目之一,用于快速部署分布式应用。本文将介绍 Docker Compose 的基本概念、安装流程及使用方法。 简介 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,Docker C…

交换基础配置--单臂路由

1、创建vlan 创建vlan10 创建vlan10和vlan20 创建vlan1到vlan9 vlan1可以不用创建&#xff0c;因为交换机的所有接口默认为vlan1 本实验只需要vlan10和vlan20&#xff0c;以上只是介绍创建vlan的方法。 查看创建的vlan&#xff1a; sw2同理。接着将需要划分vlan的接口划入…