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和命令行工具各做一遍)。
展开
2个回答
展开全部
此题完整代码在最后面已经给出;
分析主要知识点,
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);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询