Java数组元素查找问题:for循环查找位置的错误修复方案
问题修复方案
你的代码存在两个核心问题,以下是具体分析和修复方法:
1. 位置输出异常(如3 found at position 21)
这是字符串拼接优先级导致的逻辑错误:Java中字符串与数字拼接会按从左到右顺序执行。element+ " found at position "+ i+1的执行流程是:
- 先将
element与字符串拼接为"3 found at position " - 再拼接
i(值为2)得到"3 found at position 2" - 最后拼接
1,最终变成"3 found at position 21"
修复方式:给i+1添加括号,确保先完成算术运算再参与字符串拼接:
System.out.println(element+ " found at position "+ (i+1));
2. 始终输出elementnot found
该问题包含两个细节错误:
- 未找到提示语句直接写在for循环外部,不管循环内是否找到元素都会执行
element与"not found"之间无空格,导致字符串连在一起
修复方式:
- 新增布尔变量
found标记是否找到目标元素,初始值设为false - 找到元素时将
found设为true - 循环结束后,仅当
found为false时输出未找到信息,同时补充空格
修复后的完整代码
import java.util.Scanner; public class prac{ public static void main(String[] args) { int n, element, i; boolean found = false; // 新增查找标记 Scanner sc = new Scanner(System.in); System.out.println("Enter array size [1-100]: "); n = sc.nextInt(); int[] a = new int[100]; System.out.println("Enter array elements: "); for(i=0; i<n; i++) { a[i]=sc.nextInt(); } System.out.println("Enter element to search: "); element=sc.nextInt(); for (i=0; i<n; i++) { if (a[i]==element) { System.out.println(element+ " found at position "+ (i+1)); // 修复位置拼接 found = true; // 标记已找到 } } if (!found) { // 仅未找到时输出提示 System.out.println(element + " not found"); // 补充空格 } } }
内容的提问来源于stack exchange,提问作者Zervis _
相关产品推荐
相关产品推荐

