Java日常练习—类与对象

news2024/12/29 8:45:30

习题一: 设计Circle类

【问题描述】用面向对象方法设计Circle类,求面积和周长。并设计测试类,输入半径(double型),可输出面积和周长。

PI用Math类中的PI.结果保留3位小数

【输入形式】输入半径值,可以是整数或浮点数。

【输出形式】输出圆的面积和周长,第一行输出面积,第二行输出的周长。

【样例输入】

5.2

【样例输出】

84.949
32.673

运行结果:

在这里插入图片描述

源码:

package circle;

import java.util.Scanner;

public class Cricle {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		double input = in.nextDouble();
		Cricle_Cri.show(input);
		in.close();
	}
}
class Cricle_Cri{
	public static double area(double R) {
		return R*R*Math.PI;
	}
	public static double perimeter(double R) {
		return 2*R*Math.PI;
	}
	public static void show(double R) {
		System.out.printf("%.3f",area(R));
		System.out.println();
		System.out.printf("%.3f",perimeter(R));
	}
}

习题二: 股票类Stock及其测试类

【问题描述】

设计一个Stock类,这个类包括:

(1)成员变量:

股票代码:symbol,字符串数据域

股票名称:name,字符串数据域

昨日收盘价:previousClosingPrice,double型数据域

当前价:currentPrice,double型数据域

(2)方法:

getChangePercent():返回从previousClosingPrice变化到currentPrice的百分比

getDetails():返回由股票信息组成的字符串

根据创建对象的要求编写相应的构造方法。

编写测试类,创建两支股票,第一支股票的信息为:“600029”、“nanfanghangkong”,昨日收盘价、当前价由键盘输入;第二支股票信息全部由键盘输入。

输出两支股票信息,并输出今日涨幅(百分比),保留两位小数。

【输入形式】

第一支股票的昨日收盘价和当前价

第二支股票的代码、名称、昨日收盘价和当前价

【输出形式】

第一支股票的信息

第一支股票的涨幅

第二支股票的信息

第二支股票的涨幅

【样例输入】

10.61 10.21

600085 tongrentang 37.41 39.24

【样例输出】

the first:

Symbol:600029

Name:nanfanghangkong

PreviousClosingPrice:10.61

CurrentPrice:10.21

amount of increase:-3.77%

the second:

Symbol:600085

Name:tongrentang

PreviousClosingPrice:37.41

CurrentPrice:39.24

amount of increase:4.89%

运行结果:

在这里插入图片描述

源码:

package share_cer;

import java.text.NumberFormat;
import java.util.Scanner;

public class Share_Cer {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		double previousClosingPrice = in.nextDouble();
		double currentPrice = in.nextDouble();
		String symble = in.next();
		String name = in.next();
		double previousClosingPrice1 = in.nextDouble();
		double currentPrice1 = in.nextDouble();
		Stock.setPreviousClosingPrice(previousClosingPrice);
		Stock.setCurrentPrice(currentPrice);
		System.out.println("the first:");
		Stock.getDetails();
		System.out.println("\n");
		Stock input1 = new Stock(symble,name,previousClosingPrice1,currentPrice1);
		System.out.println("the second:");
		Stock.getDetails();
		in.close();
	}
}
class Stock{
	private static String symble = "600029";
	private static String name = "nanfanghangkong";
	private static double previousClosingPrice;
	private static double currentPrice;
	public static double getChangePercent() {
		return (currentPrice-previousClosingPrice)/previousClosingPrice;
	}
	public static void getDetails() {
		NumberFormat n = NumberFormat.getPercentInstance();
		n.setMinimumFractionDigits(2);
		System.out.print("Symbol:"+symble+"\n"+"Name:"+name+"\n"+
							"PreviousClosingPrice:"+previousClosingPrice+"\n"+
							"CurrentPrice:"+currentPrice+"\n"+"amount of increase:"+
							n.format(getChangePercent()));
	}
	public static double getPreviousClosingPrice() {
		return previousClosingPrice;
	}
	public static void setPreviousClosingPrice(double previousClosingPrice) {
		Stock.previousClosingPrice = previousClosingPrice;
	}
	public static double getCurrentPrice() {
		return currentPrice;
	}
	public static void setCurrentPrice(double currentPrice) {
		Stock.currentPrice = currentPrice;
	}
	public Stock(String symble,String name,double previousClosingPrice,double currentPrice) {
		Stock.symble = symble;
		Stock.name = name;
		Stock.previousClosingPrice = previousClosingPrice;
		Stock.currentPrice = currentPrice;
	}
}

习题三:账户类Account及测试类

【问题描述】

设计一个账户类Account,它包括:
在这里插入图片描述

这两类方法也需要定义,不在类图中反映:(1)无参构造方法(默认值:id:0, balalce:0, rate:0,

date:1970年1月1日0时0分0秒),带参构造方法;(2)标准方法(即 getters/setters方法)

设计测试类,(1)输入账号、余额、年利率,开户日期为2021年3月18日9时30分30秒,以这组数据创建Account类对象,输出该账户信息,取出3000元,输出取款信息,若取款时若账户余额不足,提示“The balance of account is insufficient!”,输出操作后的账户信息。

(2)调用无参构造方法创建第二个Account对象,输出账户信息。将年利率修改为2.5%,开户日期修改为2021年3月18日15时04分10秒。存入2500元,输出存款信息及账户信息。

提示:

Calendar类不能实例化,使用getInstance()获得实例,使用set(int,int,int,int,int,int)设置日期时间;使用获get(Calendar.XXX)获得日期时间,详细资料查阅java API或相关博客。Calendar中月份用0-11表示1-12月。在使用Calendar.HOUR_OF_DAY)对应的24小时制的时间。

【输入形式】账号 余额 年利率
【输出形式】见样例
【样例输入】

//以下为两组测试数据,每次运行只测试一组

1122 20000 0.045

1133 2000 0.04
【样例输出】

//以下为两组测试数据的运行结果,每次运行只测试一组,注释部分仅用于理解输出结果,不需要在程序中输出

//第一组测试结果

the first:

account:1122

balance:20000.0

rate:4.5%

date:2021/03/18 9:30:30

withdraw:3000.0

account:1122

balance:17000.0

rate:4.5%

date:2021/03/18 9:30:30

the second:

account:0

balance:0.0

rate:0.0%

date:2021/03/18 15:4:15

deposit:2500.0

account:0

balance:2500.0

rate:2.5%

date:2021/03/18 15:4:15

//第二组测试结果

the first:

account:1133

balance:2000.0

rate:4.0%

date:2021/03/18 9:30:30

withdraw:3000.0 The balance of account is insufficient!

account:1133

balance:2000.0

rate:4.0%

date:2021/03/18 9:30:30

the second:

account:0

balance:0.0

rate:0.0%

date:2021/03/18 15:4:15

deposit:2500.0

account:0

balance:2500.0

rate:2.5%

date:2021/03/18 15:4:15

运行结果:

在这里插入图片描述

源码:

/*
 * 作者:Survivor
 * 功能:银行账户管理系统
 * 日期:5.15
 */
package person_account;

import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;

public class Person_Account {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int account = in.nextInt();
		double balance = in.nextDouble();
		double rate = in.nextDouble();
		System.out.println("the first:");
		Acount a1 = new Acount(account, balance, rate);//引用带参构造方法
		a1.show(a1.first);
		a1.withdraw(3000.0);//取出3000元
		if(a1.tap == 1)//用于判断是否输出超额提示
			System.out.println("withdraw:3000.0 The balance of account is insufficient!");
		else
			System.out.println("withdraw:3000.0");
		a1.show(a1.first);
		System.out.println();
		System.out.println("the second:");
		Acount a2 = new Acount();//引用无参构造方法
		a2.show(a2.second);
		a2.deposit(2500.0,0.025);//存储2500元,并将年利率修改为2.5%
		System.out.println("deposit:2500.0");//显示存储金额
		a2.show(a2.second);
		in.close();
	}
}

class Acount {
	private int id;
	private double balance;
	private double rate;
	private Calendar data;
	String second;
	String first;
	int tap = 0;//tap用于标识是否取款金额超额,初始值为0,若在问题域类withdraw方法中判断出已超额
				//则将tap赋值为1,并在主类中输出超额提醒,表明取款失败
	public String Cale(int h, int m, int s) {//Calendar方法,用于自定义所需时间
		data = Calendar.getInstance();
		data.set(Calendar.YEAR, 2021);
		data.set(Calendar.MONTH, Calendar.MARCH);
		data.set(Calendar.DAY_OF_MONTH, 18);
		data.set(Calendar.HOUR_OF_DAY, h);
		data.set(Calendar.MINUTE, m);
		data.set(Calendar.SECOND, s);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//定义时间输出格式
		String strDate = sdf.format(data.getTime());
		return strDate;
	}

	public void withdraw(double money) {//取款方法
		if (balance>money)//判断取款金额是否超额
			this.balance = balance - money;
		else
			tap = 1;
	}

	public void deposit(double money,double rate) {//存款方法
		this.balance = balance + money;
		this.rate = rate;//修改年利润
		
	}

	public void show(String time) {//显示方法
		System.out.println(getDetails() + time);
	}

	public String getDetails() {//生成字符串方法
		NumberFormat n = NumberFormat.getPercentInstance();
		n.setMinimumFractionDigits(1);
		return "account:" + id + "\n" + "balance:" + balance + "\n" + "rate:" + n.format(rate) + "\n" + "date:";
	}

	public Acount() {//无参构造

		this.id = 0;
		this.balance = 0.0;
		this.rate = 0;
		second = Cale(15, 4, 15);
	}
	public Acount(int id, double balance, double rate) {//带参构造
		this.id = id;
		this.balance = balance;
		this.rate = rate;
		first = Cale(9, 30, 30);
	}
}

END:you believe,you deserve!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

acwing提高——BFS的Flood Fill和最短路模型

Flood Fill 1.Lake Counting 题目http://ybt.ssoier.cn:8088/problem_show.php?pid1249 自己写的&#xff08;好理解&#xff09; #include<bits/stdc.h> using namespace std; typedef pair<int,int> PII; const int N120; int n,m; char a[N][N]; bool st[N]…

Prompt合集

作者 来自&#xff1a;f Prompt主要内容 我想让你充当「英语翻译员」、「拼写纠正员」和「改进员」。 我会用任何语言与你交谈&#xff0c;你会检测语言&#xff0c;翻译它并用我的文本的更正和改进版本用英语回答。 我希望你用更优美优雅的「高级英语单词」和句子替换我简化…

【EMC专题】为什么PCB上的单端阻抗控制在50欧?

每当我们在发板后和PCB板厂沟通说有些走线需要阻抗控制,控制在多少多少。其实我们所说的阻抗是传输线的特性阻抗。特性阻抗是不能用万用表测量出来的,他由传输线的结构以及材料决定,与传输线的长度、信号的幅度、频率等均无关。 特性阻抗的概念 当电磁波在电缆上…

【Unity100个实用小技巧】保证原图片的情况下,动态扩展图片尺寸

☀️博客主页&#xff1a;CSDN博客主页&#x1f4a8;本文由 萌萌的小木屋 原创&#xff0c;首发于 CSDN&#x1f4a2;&#x1f525;学习专栏推荐&#xff1a;面试汇总❗️游戏框架专栏推荐&#xff1a;游戏实用框架专栏⛅️点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd;&#…

Kafka 原理温故之数据存储格式

背景 周末看系统架构的时候&#xff0c;看到一致性要求时&#xff0c;回忆了一下 Kafka 的消息一致性保障机制&#xff0c;顺便复习了一下 Kafka 的基础信息。 消息文件目录 Kafka 的消息存储目录是由 server.properties 文件的 log.dirs/tmp/kafka-logs 设置的&#xff0c;…

轻量应用服务器腾讯云和阿里云哪家更好?

轻量应用服务器阿里云和腾讯云哪个好&#xff1f;云服务器吧认为腾讯云轻量应用服务器还不错&#xff0c;腾讯云轻量服务器30元起&#xff0c;配置可选2核2G3M、2核2G4M、2核4G5M、4核8G12M、8核16G18M和16核32G28M&#xff0c;阿里云轻量应用服务器配置仅可以选择2核2G3M和2核…

c++对象中动态内存分配

c对象中动态内存分配 假设我们有两个类&#xff0c;一个是电子表格单元格类SpreadsheetCell&#xff0c;另外一个是电子表格类Spreadsheet。我们都使用过电子表格&#xff0c;一个电子表格往往都有行与列组成。所以我们的Spreadsheet类是SpreadsheetCell类的二维数组。 下面我…

MySQL—系统管理

文章目录 一、系统数据库二、常用管理工具mysqlmysqladminmysqlbinlogmysqlshowmysqldumpmysqlimport/source 一、系统数据库 MySQL安装后&#xff0c;默认会带4个数据库&#xff1a; 数据库含义mysql存储MySQL服务器正常运行所需要的各种信息 &#xff08;时区、主从、用户、…

【CAN卡通信的下位机-STM32cubeIDE-hal库+STMF4xx+数据发送和接收+中断接收方式+基础样例(2)】

【CAN卡通信的下位机-STM32cubeIDE-hal库STMF4xx数据发送和接收中断接收方式基础样例2】 1、概述2、实验环境3、问题描述4、自我尝试与努力(1)在网上查照相关配置文章&#xff0c;进行配置对比。(2)对比st的官方样例例程。(3)请教大佬&#xff0c;帮忙查看代码和调试。(4)总之…

【数据结构】散列表(哈希表)

文章目录 前言一、什么是散列表二、什么是哈希函数三、下面简单介绍几种哈希函数四、冲突处理散列冲突的方法开放定址法再散列函数法公共溢出区法链地址法 五、代码实现1.哈希函数2.链表和哈希表的创建3.哈希表初始化3.从哈希表中根据key查找元素4.哈希表插入元素5.元素删除6.哈…

100天精通Python(可视化篇)——第85天:matplotlib绘制不同种类炫酷气泡图参数说明+代码实战(网格、自定义颜色、钟型、交互、打卡、动态气泡图)

文章目录 专栏导读1. 气泡图介绍1&#xff09;介绍2&#xff09;参数说明 2. 普通气泡图3. 网格气泡图4. 自定义气泡图颜色5. 不同颜色气泡图6. 钟型气泡图7. 交互气泡图8. 打卡气泡图9. 动态气泡图 专栏导读 &#x1f525;&#x1f525;本文已收录于《100天精通Python从入门到…

实战打靶集锦-020-Tre

提示&#xff1a;本文记录了博主一次艰难又失败的提权经历 目录 1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 Apache探查4.1.1 adminer.php4.1.2 /cms/目录4.1.3 /info.php页面4.1.4 nikto扫描4.1.5 dirb扫描4.1.6 登录Adminer 5. 提权5.1 系统信息枚举5.2 定时任务枚举5…

SocketTools 11在所有HTTP客户端组件支持

SocketTools 11在所有HTTP客户端组件支持 在所有HTTP客户端组件中添加了对HTTP/2.0协议的支持。 更新了TLS 1.2(及更高版本)和SSH 2.0的安全选项&#xff0c;以使用Microsoft Windows 11和Windows Server 2022中提供的密码套件。较旧、安全性较低的密码套件已被弃用&#xff0…

21级计组硬件实验三-八位串行加法器验证

问题1&#xff1a; 小明同学正在做【半加器、全加器与八位串行加法器实验】&#xff0c;他画好了电路图&#xff0c;但还有不少困难&#xff0c;现在他求助于你&#xff0c;请你帮他解决。 答&#xff1a;选A 注释&#xff1a;A是与门&#xff0c;B是或门&#xff0c;C是同…

【cmake】cmake 实现交叉编译

在PC上开发时&#xff0c;我们可以直接在PC端编译、链接、运行&#xff0c;但是到了嵌入式环境&#xff0c;由于嵌入式的设备资源&#xff08;CPU、RAM&#xff09;无法和PC端相比&#xff0c;如果项目比较复杂&#xff0c;很难甚至不可能在设备上编译。因此&#xff0c;我们一…

vue diff算法与虚拟dom知识整理(9) 手写patch递归子节点上树,用自己写的patch实现虚拟节点替换

上文 我们做到让一个文字虚拟节点上树 但子节点显然还 没有完成 那这次我们继续 递归的话 我们需要换个思路 我们将 src下的入口文件 index.js代码改成这样 import h from "./snabbdom/h"; import patch from "./snabbdom/patch";const container docum…

Apache Zeppelin系列教程第七篇——运行paragraph的整个流程分析

Zeppelin运行paragraph的整个流程分析 前文分别讲述了&#xff0c;JdbcInterpreter、Interpreter、Zengine的流程&#xff0c;本文来主要串联起来paragraph的整个流程 前端 首先前端部分点运行的时候是通过websocket向后端发送请求的zeppelin-web/src/components/websocket/…

swp协议-1

Swp接口是UICC和CLF&#xff08;非接前端&#xff09;之间的面向比特流&#xff0c;点到点通信的协议。CLF是主设备&#xff08;master&#xff09;&#xff0c;UICC是从设备&#xff08;slave&#xff09;。图SWP数据传输虽然是单线协议&#xff0c;但是是全双工数字传输。 1 …

电商项目之海量操作日志的实现

文章目录 1 问题背景2 前言3 思考4 解决思路5 交互6 工作原理7 伪代码实现7.1 安装并配置Canal Server7.2 Canal客户端拉取MQ消息7.3 Canal数据的转换7.4 定制自己的业务逻辑 1 问题背景 有时候客户做了某些操作却不认账&#xff0c;咱们又拿不出证据&#xff1b;有时候客户将账…

入参校验1

文章目录 一、简介1、快速失败(Fail Fast) 二、单字段类入参校验三、JSON实体类校验1、注解解析2、案例1、简单校验2、分组校验3、嵌套校验4、集合校验5、自定义校验 四、相关1、源码文件2、参考地址 一、简介 1、快速失败(Fail Fast) Spring Validation 默认会校验完所有字段…