刷题刷到的有点花里胡哨的 大佬帮忙看看可好 最好是写下 没啥头绪 感谢感谢

Lin_bai_ 2020-10-09 06:01:56
张三,李四去饭店吃饭,饭后结账时,张三,李四各拿出一张100人名币,几经推搡,最后收款员结过了李四的100元人名币,几经推搡,最后收款员结过了李四的100元人名币,判断张三和李四的100元人名币是不是同一张钞票?李四和收款员收上人名币是不是同一张钞票?张三和收款员手中的100元人名币是不是同一张钞票?
...全文
2049 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lin_bai_ 2020-10-10
  • 打赏
  • 举报
回复
public Money(double value) { this("RMB", value); } 这一句是什么意思呀 上个步骤是属性 这个是??
qybao 2020-10-10
  • 打赏
  • 举报
回复
引用 4 楼 Lin_bai_ 的回复:
主要是不知道怎么去编写 上面大佬写的感觉有点看不懂
有什么不好理解的?就是两个钱对象,放到一个集合里打乱顺序再取出来,然后判断取出的钱和放入集合前的钱是否是同一个对象。
Lin_bai_ 2020-10-10
  • 打赏
  • 举报
回复
主要是不知道怎么去编写 上面大佬写的感觉有点看不懂
KeepSayingNo 2020-10-10
  • 打赏
  • 举报
回复
这个考察的是队列的问题,可以把收款员当做一个队列,钱当做一个带有ID的消息,张三和李四分别代表两个线程,将钱放入队列,然后又从队列取出钱。
Lin_bai_ 2020-10-10
  • 打赏
  • 举报
回复
好的谢谢额
qybao 2020-10-09
  • 打赏
  • 举报
回复
大概好像理解题目的意思
思路就是张三李四手里的钱经过洗牌后再回到自己手里是不是还是原来各自的钱,所以用个集合随机洗牌发牌就可以了

class Money { //钱作为对象,用于判断是否是原来的钱
String currency = "RMB";
double value = 0;
public Money(String currency, double value) {
this.currency = currency;
this.value = value;
}
public Money(double value) {
this("RMB", value);
}
}

public class Sample {
public static void main(String[] args) {
List<Money> hands = new ArrayList<>(); //用来洗牌的手
Money zhangsan = new Money(100); //张三的钱
Money lisi = new Money(100); //李四的钱
hands.add(zhangsan); //手接过张三的钱(hands[0]相当于张三的手)
hands.add(lisi); //手接过李四的钱(hands[1]相当于李四的手)
Collections.shuffle(hands); //几经推搡(就好比钱再手里洗牌)
Money shoukuanyuan = hands.get(1); //收款员拿过李四手里的钱
System.out.printf("张三手里的钱是否李四的钱?%s\n", hands.get(0)==lisi?"是":"不是");
System.out.printf("收款员手里的钱是否原来李四的钱? %s\n", shoukuanyuan==lisi?"是":"不是");
System.out.printf("张三手里的钱是否原来张三的钱? %s\n", hands.get(0)==zhangsan?"是":"不是");
}
}

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧