画夕颜 2024-04-04 18:59 采纳率: 70%
浏览 3
已结题

这样改写 Java 的循环嵌套应该没问题吧?

关于Java 循环嵌套的的问题,我把它改写成如下形式应该没有什么问题吧?

修改前的版本:

    while ((bytesRead = line.read(buffer, 0, buffer.length)) != 0) {
        
              for (int i = 0; i < bytesRead; i += 2) {

              }
    }

修改后的版本:

    for (int i = 0; i < (bytesRead = line.read(buffer, 0, buffer.length)); i += 2) {

    }
  • 写回答

3条回答 默认 最新

  • Kwan的解忧杂货铺 Java领域优质创作者 2024-04-04 18:59
    关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    修改后的版本是有问题的。在原始版本中,外层的while循环被用来读取数据,内层的for循环用来处理读取到的数据。而在修改后的版本中,通过将while循环改写为for循环,并没有实现相同的逻辑。

    以下是正确的修改版本的建议:

    1. 将while循环改写为for循环:
    for (int bytesRead = line.read(buffer, 0, buffer.length); bytesRead != 0; bytesRead = line.read(buffer, 0, buffer.length)) {
    
    }
    
    1. 在内层循环中处理读取到的数据:
    for (int bytesRead = line.read(buffer, 0, buffer.length); bytesRead != 0; bytesRead = line.read(buffer, 0, buffer.length)) {
        for (int i = 0; i < bytesRead; i += 2) {
    
        }
    }
    

    请注意,在改写while循环为for循环时,需要确保每次迭代都执行line.read(buffer, 0, buffer.length)来读取新的数据。此外,为了避免在第一次迭代之前就退出循环,需要将读取语句放置在for循环的初始化部分,而不能将其直接作为循环条件。

    通过这样的修改,你可以保持原来的逻辑,并使代码更清晰易读。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月4日
  • 修改了问题 4月4日
  • 创建了问题 4月4日

悬赏问题

  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求