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

本文主要是介绍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 pricestock.currentPrice = input.nextDouble();// Display stock infoSystem.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;}
}

这篇关于java类和对象相关练习,book类,person类,Rectangle类,类、Stock类,Conversion类实现公英里转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/921137

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

Java五子棋之坐标校正

上篇针对了Java项目中的解构思维,在这篇内容中我们不妨从整体项目中拆解拿出一个非常重要的五子棋逻辑实现:坐标校正,我们如何使漫无目的鼠标点击变得有序化和可控化呢? 目录 一、从鼠标监听到获取坐标 1.MouseListener和MouseAdapter 2.mousePressed方法 二、坐标校正的具体实现方法 1.关于fillOval方法 2.坐标获取 3.坐标转换 4.坐

Spring Cloud:构建分布式系统的利器

引言 在当今的云计算和微服务架构时代,构建高效、可靠的分布式系统成为软件开发的重要任务。Spring Cloud 提供了一套完整的解决方案,帮助开发者快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器等)。本文将探讨 Spring Cloud 的定义、核心组件、应用场景以及未来的发展趋势。 什么是 Spring Cloud Spring Cloud 是一个基于 Spring

LangChain转换链:让数据处理更精准

1. 转换链的概念 在开发AI Agent(智能体)时,我们经常需要对输入数据进行预处理,这样可以更好地利用LLM。LangChain提供了一个强大的工具——转换链(TransformChain),它可以帮我们轻松实现这一任务。 转换链(TransformChain)主要是将 给定的数据 按照某个函数进行转换,再将 转换后的结果 输出给LLM。 所以转换链的核心是:根据业务逻辑编写合适的转换函

RecastNavigation之Poly相关类

Poly分成正常的Poly 和 OffMeshPoly。 正常的Poly 又分成 原始的Poly 和 Detail化的Poly,本文介绍这两种。 Poly的边分成三种类型: 1. 正常边:有tile内部的poly与之相邻 2.border边:没有poly与之相邻 3.Portal边:与之相邻的是外部tile的poly   由firstLink索引 得到第一个连接的Poly  通

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

java8的新特性之一(Java Lambda表达式)

1:Java8的新特性 Lambda 表达式: 允许以更简洁的方式表示匿名函数(或称为闭包)。可以将Lambda表达式作为参数传递给方法或赋值给函数式接口类型的变量。 Stream API: 提供了一种处理集合数据的流式处理方式,支持函数式编程风格。 允许以声明性方式处理数据集合(如List、Set等)。提供了一系列操作,如map、filter、reduce等,以支持复杂的查询和转

Java面试八股之怎么通过Java程序判断JVM是32位还是64位

怎么通过Java程序判断JVM是32位还是64位 可以通过Java程序内部检查系统属性来判断当前运行的JVM是32位还是64位。以下是一个简单的方法: public class JvmBitCheck {public static void main(String[] args) {String arch = System.getProperty("os.arch");String dataM

详细分析Springmvc中的@ModelAttribute基本知识(附Demo)

目录 前言1. 注解用法1.1 方法参数1.2 方法1.3 类 2. 注解场景2.1 表单参数2.2 AJAX请求2.3 文件上传 3. 实战4. 总结 前言 将请求参数绑定到模型对象上,或者在请求处理之前添加模型属性 可以在方法参数、方法或者类上使用 一般适用这几种场景: 表单处理:通过 @ModelAttribute 将表单数据绑定到模型对象上预处理逻辑:在请求处理之前

eclipse运行springboot项目,找不到主类

解决办法尝试了很多种,下载sts压缩包行不通。最后解决办法如图: help--->Eclipse Marketplace--->Popular--->找到Spring Tools 3---->Installed。