• 第三天 猫狗队列


     实现一种猫狗队列的结构,要求如下:
           1. 用户可以调用 add 方法将 cat 或者 dog 放入队列中
           2. 用户可以调用 pollAll 方法将队列中的 cat 和 dog 按照进队列的先后顺序依次弹出
           3. 用户可以调用 pollDog 方法将队列中的 dog 按照进队列的先后顺序依次弹出
           4. 用户可以调用 pollCat 方法将队列中的 cat 按照进队列的先后顺序依次弹出
           5. 用户可以调用 isEmpty 方法检查队列中是否还有 dog 或 cat
           6. 用户可以调用 isDogEmpty 方法检查队列中是否还有 dog
           7. 用户可以调用 isCatEmpty 方法检查队列中是否还有 cat

    额,这道题,我当时提前看了左神的思路

    他明确指出不能创建三个栈,一个放猫,一个放狗,一个混合放,其实我看到题目浅浅思考了一下,就想要拿这个方法写,然后,被直接否定

    我不理解,于是,我去写了一个多小时的代码,在某🐂上找了类似题,测试了一下结果 -- '泪流满面'

     

    1. import java.util.LinkedList;
    2. import java.util.Queue;
    3. import java.util.Scanner;
    4. class CatDogQueue1{
    5. Queue<String> catQueue;
    6. Queue<String> dogQueue;
    7. Queue<String> catdogQueue;
    8. public CatDogQueue1(){
    9. catQueue = new LinkedList<String>();
    10. dogQueue = new LinkedList<String>();
    11. catdogQueue = new LinkedList<String>();
    12. }
    13. // 1. 用户可以调用 add 方法将 cat 或者 dog 放入队列中
    14. public void add(String input){
    15. catdogQueue.add(input);
    16. if(input.substring(0,3).equals("cat")){
    17. catQueue.add(input);
    18. }else{
    19. dogQueue.add(input);
    20. }
    21. }
    22. // 2. 用户可以调用 pollAll 方法将队列中的 cat 和 dog 按照进队列的先后顺序依次弹出
    23. public void pollAll(){
    24. while(!catdogQueue.isEmpty()){
    25. System.out.println(catdogQueue.poll());
    26. }
    27. return;
    28. }
    29. // 3. 用户可以调用 pollDog 方法将队列中的 dog 按照进队列的先后顺序依次弹出
    30. public void pollDog(){
    31. while(!dogQueue.isEmpty()){
    32. System.out.println(dogQueue.poll());
    33. }
    34. }
    35. // 4. 用户可以调用 pollCat 方法将队列中的 cat 按照进队列的先后顺序依次弹出
    36. public void pollCat(){
    37. while(!catQueue.isEmpty()){
    38. System.out.println(catQueue.poll());
    39. }
    40. }
    41. // 5. 用户可以调用 isEmpty 方法检查队列中是否还有 dog 或 cat
    42. public void isEmpty(){
    43. if(dogQueue.isEmpty()&&catQueue.isEmpty()){
    44. System.out.println("yes");
    45. }else{
    46. System.out.println("no");
    47. }
    48. }
    49. // 6. 用户可以调用 isDogEmpty 方法检查队列中是否还有 dog
    50. public void isDogEmpty(){
    51. if(dogQueue.isEmpty()){
    52. System.out.println("yes");
    53. }else{
    54. System.out.println("no");
    55. }
    56. }
    57. // 7. 用户可以调用 isCatEmpty 方法检查队列中是否还有 cat
    58. public void isCatEmpty(){
    59. if(catQueue.isEmpty()){
    60. System.out.println("yes");
    61. }else{
    62. System.out.println("no");
    63. }
    64. }
    65. }
    66. public class Text{
    67. // add pollAll pollDog pollCat isEmpty isDogEmpty isCatEmpty
    68. public static void main(String[] args) {
    69. CatDogQueue1 catDogQueue = new CatDogQueue1();
    70. Scanner scanner = new Scanner(System.in);
    71. int sum = scanner.nextInt();
    72. while(sum>0){
    73. String intput = scanner.next();
    74. sum--;
    75. if(intput.equals("add")){
    76. catDogQueue.add(scanner.nextLine());
    77. }else if(intput.equals("pollAll")){
    78. catDogQueue.pollAll();
    79. }else if(intput.equals("pollDog")){
    80. catDogQueue.pollDog();
    81. }else if(intput.equals("pollCat")){
    82. catDogQueue.pollCat();
    83. }else if(intput.equals("isEmpty")){
    84. catDogQueue.isEmpty();
    85. }else if(intput.equals("isDogEmpty")){
    86. catDogQueue.isDogEmpty();
    87. }else{
    88. catDogQueue.isCatEmpty();
    89. }
    90. }
    91. }
    92. }

    我简单总结一下,我的失败原因:

             是因为如果排序猫猫狗狗猫 然后用单独的猫的队列出了三个猫 整个的队列没有办法将第三个猫出去 所以 难以更新队列


    然后 左神的方法加了一个时间戳,就可以删除了

    于是我就觉得六六六,在之后,代码重新改 而一生要强的中国女人表示 这代码必须要敲完-于是我又搞了一个多小时

    1. import java.util.LinkedList;
    2. import java.util.Queue;
    3. import java.util.Scanner;
    4. // 实现一种猫狗队列的结构,要求如下:
    5. // 1. 用户可以调用 add 方法将 cat 或者 dog 放入队列中
    6. // 2. 用户可以调用 pollAll 方法将队列中的 cat 和 dog 按照进队列的先后顺序依次弹出
    7. // 3. 用户可以调用 pollDog 方法将队列中的 dog 按照进队列的先后顺序依次弹出
    8. // 4. 用户可以调用 pollCat 方法将队列中的 cat 按照进队列的先后顺序依次弹出
    9. // 5. 用户可以调用 isEmpty 方法检查队列中是否还有 dog 或 cat
    10. // 6. 用户可以调用 isDogEmpty 方法检查队列中是否还有 dog
    11. // 7. 用户可以调用 isCatEmpty 方法检查队列中是否还有 cat
    12. class PetQuenue{
    13. private String s;
    14. private long count;
    15. public PetQuenue(String s, long count){
    16. this.s = s;
    17. this.count = count;
    18. }
    19. public String getString(){
    20. return this.s;
    21. }
    22. public long getCount(){
    23. return this.count;
    24. }
    25. }
    26. class CatDogQueue{
    27. Queue<PetQuenue> catQueue;
    28. Queue<PetQuenue> dogQueue;
    29. int count = 0;
    30. public CatDogQueue(){
    31. catQueue = new LinkedList<PetQuenue>();
    32. dogQueue = new LinkedList<PetQuenue>();
    33. count = 0;
    34. }
    35. // 1. 用户可以调用 add 方法将 cat 或者 dog 放入队列中
    36. public void add(String input){
    37. if(input.substring(0,3).equals("cat")){
    38. catQueue.add(new PetQuenue(input,count++));
    39. }else{
    40. dogQueue.add(new PetQuenue(input,count++));
    41. }
    42. }
    43. // 2. 用户可以调用 pollAll 方法将队列中的 cat 和 dog 按照进队列的先后顺序依次弹出
    44. public void pollAll(){
    45. while(!catQueue.isEmpty() && !dogQueue.isEmpty()){
    46. if(catQueue.peek().getCount()>dogQueue.peek().getCount()){
    47. System.out.println(dogQueue.poll().getString().trim());
    48. }else{
    49. System.out.println(catQueue.poll().getString().trim());
    50. }
    51. }
    52. while(!catQueue.isEmpty()){
    53. System.out.println(catQueue.poll().getString().trim());
    54. }
    55. while(!dogQueue.isEmpty()){
    56. System.out.println(dogQueue.poll().getString().trim());
    57. }
    58. }
    59. // 3. 用户可以调用 pollDog 方法将队列中的 dog 按照进队列的先后顺序依次弹出
    60. public void pollDog(){
    61. while(!dogQueue.isEmpty()){
    62. System.out.println(dogQueue.poll().getString().trim());
    63. }
    64. }
    65. // 4. 用户可以调用 pollCat 方法将队列中的 cat 按照进队列的先后顺序依次弹出
    66. public void pollCat(){
    67. while(!catQueue.isEmpty()){
    68. System.out.println(catQueue.poll().getString().trim());
    69. }
    70. }
    71. // 5. 用户可以调用 isEmpty 方法检查队列中是否还有 dog 或 cat
    72. public void isEmpty(){
    73. if(dogQueue.isEmpty()&&catQueue.isEmpty()){
    74. System.out.println("yes");
    75. }else{
    76. System.out.println("no");
    77. }
    78. }
    79. // 6. 用户可以调用 isDogEmpty 方法检查队列中是否还有 dog
    80. public void isDogEmpty(){
    81. if(dogQueue.isEmpty()){
    82. System.out.println("no");
    83. }else{
    84. System.out.println("yes");
    85. }
    86. }
    87. // 7. 用户可以调用 isCatEmpty 方法检查队列中是否还有 cat
    88. public void isCatEmpty(){
    89. if(catQueue.isEmpty()){
    90. System.out.println("no");
    91. }else{
    92. System.out.println("yes");
    93. }
    94. }
    95. }
    96. public class Main{
    97. // add pollAll pollDog pollCat isEmpty isDogEmpty isCatEmpty
    98. public static void main(String[] args) {
    99. CatDogQueue catDogQueue = new CatDogQueue();
    100. Scanner scanner = new Scanner(System.in);
    101. int sum = scanner.nextInt();
    102. while(sum>0){
    103. String intput = scanner.next();
    104. sum--;
    105. if(intput.equals("add")){
    106. catDogQueue.add(scanner.nextLine());
    107. }else if(intput.equals("pollAll")){
    108. catDogQueue.pollAll();
    109. }else if(intput.equals("pollDog")){
    110. catDogQueue.pollDog();
    111. }else if(intput.equals("pollCat")){
    112. catDogQueue.pollCat();
    113. }else if(intput.equals("isEmpty")){
    114. catDogQueue.isEmpty();
    115. }else if(intput.equals("isDogEmpty")){
    116. catDogQueue.isDogEmpty();
    117. }else{
    118. catDogQueue.isCatEmpty();
    119. }
    120. }
    121. }
    122. }

    再然后,这个代码还是跑不过,yes和no 就一直有点问题,我就又去读了一边题,发现是不是我语文原因,就改了一下,  结果 自测过了,提交运行不行

    最后,我觉得要相信自己,改回来了yes no 去自己的idea跑了一下 好家伙!

    看图吧

     

     就是说 这个故事告诉我们

    1.相信自己(我的语文没毛病!!!!!!!!!)

    2.不要轻易 '泪流满面 ',因为 还有更值得 '泪流满面' 的 呜呜呜

    补充一下 这个代码 maybe有bug 看到的球球了 告诉孩子一声,我去改改

    还有!某🐂有这个 你们去试试哎~~~冲啊

  • 相关阅读:
    有限小数,进制转换,思维
    好用的一站式MES系统有哪些?全面管理生产流程,实现工厂数字化转型
    LeetCode——1636.按照频率将数组升序排序
    CentOS 7 服务器上创建新用户及设置用户密码有效期
    广州华锐互动:候车室智能数字孪生系统实现交通信息可视化
    远程管理通道安全SSH协议主机验证过程
    2022最新前端vue面试题
    fiddler抓包
    春招苦短,我用百道Python面试题备战
    【Java游戏项目】超级玛丽(附源码)
  • 原文地址:https://blog.csdn.net/m0_63501066/article/details/126694407