java 作业求解

创建一个人民币类Rmb,内有元、角、分数据。写一个方法显示这个数据,如“1元3角4分”、“3元零4分”、“5元”等。写一个方法将两个人民币数据相加,如“1元3角4分”加上... 创建一个人民币类Rmb,内有元、角、分数据。写一个方法显示这个数据,如“1元3角4分”、“3元零4分”、“5元”等。写一个方法将两个人民币数据相加,如“1元3角4分”加上“3元8角9分”等于“5元2角3分”,在main方法里测试该类。在文件的开头加上package语句,对Java的包机制加以使用。要求编译后能放到正确位置,并能够执行(用Eclipse和命令行工具各做一遍)。 展开
 我来答
雪飞潇潇
2019-06-02 · TA获得超过6273个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:832万
展开全部

此题完整代码在最后面已经给出;

分析主要知识点,

a. 面向对象的设计.

b. 整除/,取余%的用法 

c.  if else 的使用;(或者三目运算符的使用);

d. 以及字符串的处理

参考代码

//Rmb类
public class Rmb {
private int y;// 元
private int j;// 角
private int f;// 分

public Rmb() {//无参构造器

}

public Rmb(String str) {//有参构造器1: 字符串参数 "x元x角x分"
boolean b1 = false;
boolean b2 = false;
if (str.contains("元")) {
b1 = true;
y = Integer.parseInt(str.split("元")[0]);
}
if (str.contains("角")) {
b2 = true;
String s = str.split("角")[0];
j = Integer.parseInt(b1 ? s.split("元")[1] : s);
}
if (str.contains("分")) {
String s = str.split("分")[0];
f = Integer.parseInt(b2 ? s.split("角")[1] : s);
}
}

public Rmb(int y, int j, int f) {//有参构造器2: 3个整型参数
this.y = y;
this.j = j;
this.f = f;
}

//加法
public Rmb plus(Rmb rmb) {
int num1 = y * 100 + j * 10 + f;
int num2 = rmb.getY() * 100 + rmb.getJ() * 10 + rmb.getF();
int total = num1 + num2;

//结果
Rmb result = new Rmb();
result.setY(total / 100);//百位
result.setJ((total / 10) % 10);//十位
result.setF(total % 10);//各位

return result;
}

//属性的set 和get
public int getY() {
return y;
}

public void setY(int y) {
this.y = y;
}

public int getJ() {
return j;
}

public void setJ(int j) {
this.j = j;
}

public int getF() {
return f;
}

public void setF(int f) {
this.f = f;
}

//重写hashCode 和 equals 方法 是 良好的习惯
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + f;
result = prime * result + j;
result = prime * result + y;
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Rmb other = (Rmb) obj;
if (f != other.f)
return false;
if (j != other.j)
return false;
if (y != other.y)
return false;
return true;
}

//重写toString方法, 方便输出
@Override
public String toString() {
String s1=y == 0 ? "" : y + "元";
String s2=j==0?(y!=0&&f!=0?"零":""):j+"角";//前后都不为0,那么中间为0,就输出零
String s3=f == 0 ? "" : f + "分";
String result=s1+s2+s3;
return result.length()==0?"Zero":result;
}

//main方法, 用于测试
public static void main(String[] args) {
Rmb rmb1 = new Rmb(99, 7, 9);
Rmb rmb2 = new Rmb(0, 4, 2);
System.out.println(rmb1.plus(rmb2));

Rmb rmb3 = new Rmb("50元3角6分");
Rmb rmb4 = new Rmb("17元7角3分");
Rmb result2 = rmb3.plus(rmb4);
System.out.println(result2);

Rmb rmb5= new Rmb("5元1角4分");
Rmb rmb6 = new Rmb("1元8角6分");
Rmb result3 = rmb5.plus(rmb6);
System.out.println(result3);

Rmb rmb7= new Rmb("0元0角0分");
Rmb rmb8 = new Rmb("0元0角0分");
Rmb result4 = rmb7.plus(rmb8);
System.out.println(result4);
}
}
King天之道
2019-06-01 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:118
采纳率:75%
帮助的人:22.6万
展开全部
我写写看,待会再发
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式