如何用单个for循环在Java中根据布尔标志正反向打印数组
用单个for循环实现数组正反向打印
给定数组 Arr = {"apple" , "orange" , "pineapple"},要求当布尔标志flag为true时反向打印数组(输出pineapple、orange、apple),为false时正向打印(输出apple、orange、pineapple)。目前已有如下while循环实现的代码,现需要改用单个for循环实现:
public static void printArrayElements(boolean flag , String arr[]) { int i=0; int arrSize = arr.length; if(flag == true) { i = arrSize-1; }else { i = 0 ; } while( flag ? i >= 0 : i <arrSize ) { System.out.println(arr[i]); if(flag) { i--; }else { i++ ; } } }
单个for循环实现方案
直接把原while循环中的初始化、循环条件、索引步进逻辑整合到for循环的三个表达式中,代码如下:
public static void printArrayElements(boolean flag, String arr[]) { int arrSize = arr.length; for (int i = flag ? arrSize - 1 : 0; flag ? i >= 0 : i < arrSize; i = flag ? i - 1 : i + 1) { System.out.println(arr[i]); } }
逻辑说明
- 初始化表达式:根据
flag确定循环起始索引,true时从数组末尾(arrSize-1)开始,false时从数组开头(0)开始 - 条件判断表达式:
true时判断索引是否≥0(确保反向循环不越界),false时判断索引是否<arrSize(确保正向循环不越界) - 步进表达式:
true时索引递减(实现反向遍历),false时索引递增(实现正向遍历)
该实现完全等价于原while循环的功能,仅用单个for循环完成需求。
内容的提问来源于stack exchange,提问作者Suravi
相关产品推荐
相关产品推荐

