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

Java中检查数组元素是否存在的方法及指定输入输出的代码实现

嗨,我来帮你搞定这两个问题——先聊聊Java里怎么检查数组有没有指定元素,再给你写符合要求的程序~

一、Java中检查数组是否存在指定元素的方法

下面是几种常用的方式,你可以根据场景选:

  • 手动循环遍历:最通用的方法,不管数组有没有排序都能用,自己控制遍历逻辑。
    示例代码:

    public static boolean containsElement(int[] arr, int target) {
        for (int num : arr) {
            if (num == target) {
                return true;
            }
        }
        return false;
    }
    
  • 用Arrays.binarySearch():这个方法效率高,但必须先给数组排序!如果找到元素会返回它的索引,找不到就返回负数。
    示例代码:

    import java.util.Arrays;
    
    public static boolean containsWithBinarySearch(int[] arr, int target) {
        Arrays.sort(arr); // 先排序
        int index = Arrays.binarySearch(arr, target);
        return index >= 0;
    }
    
  • 转成List用contains():把数组转成List后直接调用contains方法,但要注意基本类型数组的坑——比如int[]转List会变成List<int[]>,得用包装类型数组Integer[]才行。
    示例代码:

    import java.util.Arrays;
    import java.util.List;
    
    // 引用类型或包装类型数组
    public static boolean containsWithList(String[] arr, String target) {
        List<String> list = Arrays.asList(arr);
        return list.contains(target);
    }
    
    // 基本类型数组的处理方式
    public static boolean containsWithIntList(int[] arr, int target) {
        List<Integer> list = Arrays.stream(arr).boxed().toList(); // Java 16+
        return list.contains(target);
    }
    
  • Stream API(Java 8+):用流的anyMatch方法,代码简洁,可读性强。
    示例代码:

    import java.util.Arrays;
    
    public static boolean containsWithStream(int[] arr, int target) {
        return Arrays.stream(arr).anyMatch(num -> num == target);
    }
    
二、实现指定输入输出的Java程序

根据你说的输入输出要求,我写了完整的程序,加了注释,你可以直接用:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 读取第一行的整数:表示接下来的行数
        int rowCount = scanner.nextInt();
        scanner.nextLine(); // 处理换行符
        
        // 存储每一行的数组
        List<int[]> rows = new ArrayList<>();
        
        for (int i = 0; i < rowCount; i++) {
            // 读取当前行的第一个整数:该行的元素个数
            int elementCount = scanner.nextInt();
            int[] rowArr = new int[elementCount];
            // 读取该行的所有元素
            for (int j = 0; j < elementCount; j++) {
                rowArr[j] = scanner.nextInt();
            }
            rows.add(rowArr);
            scanner.nextLine(); // 处理换行符
        }
        
        // 读取查询次数
        int queryCount = scanner.nextInt();
        scanner.nextLine(); // 处理换行符
        
        // 处理每个查询
        for (int i = 0; i < queryCount; i++) {
            int x = scanner.nextInt(); // 第x行(题目里从1开始计数)
            int y = scanner.nextInt(); // 第y个位置(题目里从1开始计数)
            scanner.nextLine(); // 处理换行符
            
            // 检查行是否存在
            if (x < 1 || x > rows.size()) {
                System.out.println("ERROR!");
                continue;
            }
            
            int[] targetRow = rows.get(x - 1); // 转成Java的0索引
            // 检查位置是否存在
            if (y < 1 || y > targetRow.length) {
                System.out.println("ERROR!");
            } else {
                System.out.println(targetRow[y - 1]); // 转成Java的0索引
            }
        }
        
        scanner.close();
    }
}

简单说明:

  1. 用List<int[]>来存储每一行的数组,方便动态添加和访问
  2. 注意题目里的行号和位置都是从1开始计数的,所以要转成Java里的0索引来操作
  3. 每次读取完整数后要处理换行符,避免Scanner读取异常
  4. 严格判断边界:行号超出范围、位置超出该行元素个数时,都输出ERROR!

比如输入示例:

3
3 1 2 3
2 4 5
4 6 7 8 9
2
1 2
3 5

对应的输出就是:

2
9

如果查询2 3,第二行只有2个元素,就会输出ERROR!

内容的提问来源于stack exchange,提问作者mridula g

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:03:48