如何将Java数组查找中的for循环改写为while循环?
改写Java查找循环为While循环(遵循指定伪代码)
没问题,我帮你把原来用于查找目标元素的for循环改成符合给定伪代码结构的while循环,同时保证逻辑和原代码完全一致。下面是改写后的完整代码:
import java.util.Scanner; class Algorithmus { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("Geben sie den gesuchten Wert ein: "); int k = s.nextInt(); System.out.println("Geben sie die Länge des Arrays ein: "); int n = s.nextInt(); int arr[] = new int[n]; int i = 0; System.out.println("Geben sie die Werte ein:"); for(i = 0;i<n;i++){ arr[i] = s.nextInt(); } boolean found = false; i = 0; // 重置索引变量,准备开始查找流程 // 严格遵循指定伪代码结构的while循环 while (!found && i < arr.length) { int ki = arr[i]; // 取下一个待检查的元素 found = (ki == k); // 判断当前元素是否等于目标值 if (!found) { i++; // 未找到则移动到下一个元素 } } if (found) { System.out.println((i+1)); } else { System.out.println((arr.length + 1)); } s.close(); // 关闭Scanner,避免资源泄漏 } }
关键改动说明:
- 重置了索引变量
i为0:因为之前用于填充数组的for循环已经把i带到了数组末尾的位置,必须重置才能从第一个元素开始查找。 - 严格匹配伪代码逻辑:while循环的条件同时检查
!found(未找到目标)和i < arr.length(未遍历完所有元素),完全符合伪代码的要求。 - 保持原输出逻辑一致:只有当未找到目标时才递增
i,这样找到目标时i会停留在对应索引的位置,输出i+1就能得到和原代码相同的结果;如果遍历完所有元素都没找到,i会等于数组长度,输出arr.length + 1也和原逻辑一致。 - 增加了Scanner关闭操作:这是Java IO操作的良好实践,避免不必要的资源占用。
内容的提问来源于stack exchange,提问作者M. Eichhorn
相关产品推荐
相关产品推荐

