You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改printQueue方法:仅打印限额内O,不输出超限X

解决收银队列仅打印限额内O的问题

原代码在打印收银队列时,会对超出限额或队列长度的位置输出X,现在需要修改为仅显示各收银台限额内的有效O,超出部分不输出任何内容。

修改思路

  1. 缩小循环范围:只遍历到三个收银台「限额与实际队列长度的较小值」中的最大值,避免处理完全不需要打印的行。
  2. 替换占位符:当位置超出当前收银台的限额或队列范围时,输出空字符串而非X,这样对应位置不会显示任何内容。

修改后的代码

private void printQueue(String[] cashier1, String[] cashier2, String[] cashier3) {
    int maxLimit1 = 2; // Maximum limit for cashier1
    int maxLimit2 = 3; // Maximum limit for cashier2
    int maxLimit3 = 5; // Maximum limit for cashier3

    // 计算每个收银台的有效打印长度(限额和实际长度取较小值)
    int validLength1 = Math.min(maxLimit1, cashier1.length);
    int validLength2 = Math.min(maxLimit2, cashier2.length);
    int validLength3 = Math.min(maxLimit3, cashier3.length);

    // 循环仅遍历到需要打印的最大行数
    int maxQueueSize = Math.max(validLength1, Math.max(validLength2, validLength3));

    for (int i = 0; i < maxQueueSize; i++) {
        String value1 = (i < validLength1 && cashier1[i] != null) ? "O " : "";
        String value2 = (i < validLength2 && cashier2[i] != null) ? "O " : "";
        String value3 = (i < validLength3 && cashier3[i] != null) ? "O " : "";

        System.out.printf("%-10s %-10s %-10s%n", value1, value2, value3);
    }
}

关键改动说明

  • 有效长度计算:用Math.min(限额, 队列长度)得到每个收银台实际需要打印的行数,避免处理超出限额的部分。
  • 循环范围调整:基于三个有效长度的最大值设置循环终止条件,不会遍历完全没有内容的行。
  • 占位符替换:不符合条件时返回空字符串,printf的格式化会保留占位宽度但不显示X,实现仅展示有效O的需求。

内容的提问来源于stack exchange,提问作者Seniru Senarathne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:15:08