练习:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
//在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
Scanner sc1 = new Scanner(System.in);
System.out.println("输入每行的长度");
int x = sc1.nextInt();
Scanner sc2 = new Scanner(System.in);
System.out.println("输入每列的长度");
int y = sc2.nextInt();
Scanner sc3 = new Scanner(System.in);
System.out.println("输入二维数组的第一个数");
int z = sc3.nextInt();
Scanner sc4 = new Scanner(System.in);
System.out.println("输入要查找的整数");
int l = sc4.nextInt();
Query1(x, y, z, l);
Query2(x, y, z, l);
}
//根据问题提供信息,确定数组中数据的范围,arr[0][0]是最小值,arr[x][y]为最大值。
//所以只需要判断要查找的数据在不在该范围。
private static void Query2(int x, int y, int z, int l) {
if (z <= l && l <= z + x + y - 1) {
System.out.println("数组中包含该整数");
} else {
System.out.println("数组中不包含该整数");
}
}
//根据提供的信息,将数组填充满,然后遍历数组,查询要查找的数据是否存在数组中,出现过几次。
private static void Query1(int x, int y, int z, int l) {
int f = 0;
int[][] arr = new int[x][y];
//给数组存入数据
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
arr[i][j] = z + j;
}
z++;
}
//遍历数组,读取数据。
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
//如果查询的数字存在数组中,记录次数。
if (arr[i][j] == l) {
f++;
}
}
}
//根据次数判断查询的数据是否在数组中。
if (f > 0) {
System.out.println("数组中包含该整数" + (f++) + "次");
} else {
System.out.println("数组中不包含该整数");
}
}
}
结果:
输入每行的长度
77
输入每列的长度
77
输入二维数组的第一个数
88
输入要查找的整数
111
数组中包含该整数24次
数组中包含该整数
Process finished with exit code 0