class Money{ private: int yuan; int jiao; int fen; public: Money(int y = 0, int j = 0, int f = 0): yuan(y), jiao(j), fen(f){} Money operator+(const Money &m) const{ int total_fen = (fen + m.fen) % 10; int carry_fen = (fen + m.fen) / 10; int total_jiao = (jiao + m.jiao + carry_fen) % 10; int carry_jiao = (jiao + m.jiao + carry_fen) / 10; int total_yuan = yuan + m.yuan + carry_jiao; return Money(total_yuan, total_jiao, total_fen); } friend ostream& operator<<(ostream &out, const Money &m){ out << m.yuan << "Yuan" << m.jiao << "Jiao" << m.fen << "Fen"; return out; } friend istream& operator>>(istream &in, Money &m){ in >> m.yuan >> m.jiao >> m.fen; return in; }};
时间: 2024-04-27 08:22:52 浏览: 16
这是一个 C++ 的 Money 类,它用来表示货币。它有三个私有成员变量:yuan、jiao 和 fen,分别表示元、角、分。它有一个构造函数,可以用来初始化这三个成员变量。它还重载了加号运算符,可以实现两个 Money 对象相加。它还重载了输出运算符和输入运算符,可以输出和输入 Money 对象的值。
相关问题
检查以下代码是否有逻辑错误,应该如何修改package money; import java.util.Scanner; public class Money { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int fen = in.nextInt(); Moneys x = new Moneys(fen); x.conversion(); x.show(); in.close(); } } class Moneys{ private int fen; private int jiao; private int yuan; public void conversion(){ this.fen = fen%10; this.jiao = fen/10%10; this.yuan = fen/100; } public void show() { System.out.println(yuan+"yuan"+jiao+"jiao"+fen+"fen"); } public Moneys(int fen) { this.fen = fen; } public Moneys(int yuan,int jiao,int fen) { this.fen = fen; this.jiao = jiao; this.yuan = yuan; } }
代码存在逻辑错误,因为在Moneys类的conversion方法中,fen没有被初始化,因此无输入多少钱数,都会0元0角0分应该修改为以下:
```
class Moneys{
private int;
private int jiao;
private int;
public void conversion(){
this.fen this.fen%10;
this.jiao = this.fen/10%;
this.yuan =.fen/100;
public void show() {
System.out.println(yuan+"yuan"+jiao+"jiao"+fen+"fen");
}
public Moneys(int fen) {
this.fen = fen;
}
public Moneys(int yuan,int jiao,int fen) {
this.fen = fen;
this.jiao = jiao;
this.yuan = yuan;
}
}
```
在conversion方法中,应该使用this.fen来指代类的属性fen,而不是局部变量fen。
import java.util.Scanner; public class Money { private int yuan; private int jiao; private int fen; // 构造方法1:输入元、角、分 public Money(int yuan, int jiao, int fen) { this.yuan = yuan; this.jiao = jiao; this.fen = fen; } // 构造方法2:输入总分数 public Money(int totalFen) { this.yuan = totalFen / 100; this.jiao = totalFen % 100 / 10; this.fen = totalFen % 10; } // 输出元、角、分 public void show() { System.out.println(yuan + "yuan " + jiao + "jiao " + fen + "fen"); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int totalFen = scanner.nextInt(); Money money = new Money(totalFen); money.show(); } }
这段代码定义了一个名为Money的类,其中包括了两个构造方法和一个输出元、角、分的方法。第一个构造方法通过输入元、角、分的方式创建Money对象,第二个构造方法通过输入总分数的方式创建Money对象。show方法用来输出Money对象的元、角、分信息。在main方法中,通过Scanner类获取用户输入的总分数,然后创建一个Money对象并调用show方法输出元、角、分信息。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)