编写Money类,要求具有yuan, jiao, fen三个int类型的属性及相应的置取方法,所表示的金额分别按元角分保存在各个属性中。 另外 ,还具有以下方法: 1 具有重载的四个set()方法,具体要求如下: (1)参数为int类型,将参数值存入yuan, jiao和fen都置为0; (2)参数为double类型,将参数值按分做四舍五入,然后分别存入对应的属性; (3)参数为字符串String,对字符串中的数字做解析后,按分做四舍五入,将金额分别存入对应的属性; (4)参数为Money类的对象,将参数中的金额分别存入对应的属性。 2 有两个可实现金额计算的方法 (1) times(int n)方法,参数为int,返回值为Money类对象,其中的总金额为当前对象的总金额乘以参数n (2) add(Money money)方法,参数为Money类对象,返回值为Money类对象,其中的总金额为当前对象的总金额加上参数money中的总金额。 3 有一个静态方法,按照指定格式输出总金额 writeOut(String owner, Money money)方法,输出格式如“owner have/has XX Yuan XX Jiao XX Fen.”的字符串,所输出的的金额是参数money中的总金额。 字符串转浮点数可以使用静态方法:Double.parseDouble(String)。
时间: 2023-06-02 11:07:46 浏览: 253
好的,我了解了您的要求。以下是Money类的代码实现:
```java
public class Money {
private int yuan;
private int jiao;
private int fen;
// 构造函数
public Money(int yuan, int jiao, int fen) {
this.yuan = yuan;
this.jiao = jiao;
this.fen = fen;
}
// set方法重载,实现各种类型的金额设置
public void set(int yuan) {
this.yuan = yuan;
this.jiao = 0;
this.fen = 0;
}
public void set(double yuan) {
int total = (int)Math.round(yuan*100);
this.yuan = total/100;
this.jiao = (total%100)/10;
this.fen = total%10;
}
public void set(String yuanString) {
double yuan = Double.parseDouble(yuanString);
set(yuan);
}
public void set(Money money) {
this.yuan = money.yuan;
this.jiao = money.jiao;
this.fen = money.fen;
}
// times方法,乘以一个数n
public Money times(int n) {
int totalFen = (yuan*100+jiao*10+fen) * n;
int newFen = totalFen % 10;
int newJiao = (totalFen/10) % 10;
int newYuan = totalFen/100;
return new Money(newYuan, newJiao, newFen);
}
// add方法,加上另一个Money对象
public Money add(Money money) {
int totalFen = (yuan*100+jiao*10+fen) + (money.yuan*100+money.jiao*10+money.fen);
int newFen = totalFen % 10;
int newJiao = (totalFen/10) % 10;
int newYuan = totalFen/100;
return new Money(newYuan, newJiao, newFen);
}
// 静态方法,按指定格式输出总金额
public static String writeOut(String owner, Money money) {
return owner + " has " + money.yuan + " Yuan " + money.jiao + " Jiao " + money.fen + " Fen.";
}
// 获取各个属性的方法
public int getYuan() {
return yuan;
}
public int getJiao() {
return jiao;
}
public int getFen() {
return fen;
}
}
```
这个Money类具有三个int类型的属性yuan, jiao, fen,用于保存元角分金额。同时,它具有四个重载的set方法,分别可以通过int、double、String或另一个Money对象设置金额。还有times和add两个可实现金额计算的方法,分别可以实现金额乘以一个数和金额相加。最后,有一个静态方法writeOut,按指定格式输出总金额。
如果您有更多的问题,可以继续提出,我会尽力回答。
阅读全文