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(); } }
简单说明:
- 用
List<int[]>来存储每一行的数组,方便动态添加和访问 - 注意题目里的行号和位置都是从1开始计数的,所以要转成Java里的0索引来操作
- 每次读取完整数后要处理换行符,避免Scanner读取异常
- 严格判断边界:行号超出范围、位置超出该行元素个数时,都输出
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
相关产品推荐
相关产品推荐

