1.在一个二维数组中(每个一维数组的长度相同)请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
首先要对数组有很清楚的认识,知道该数组的行和列
先举个例子:
一个二维数组如何遍历?
把它当做两个一位数组来解决,
比如定义一个数组int a[][],那么a.length返回的是这个数组行有多少,那么列呢,我们可以当做每一行的第一个元素.length就行了
代码:
int a[][] = {
{1,2,3},
{4,5,6},
{7,8,9},
{10,11,12}
};
for(int i = 0;i<a.length;i++)
{
for(int j = 0;j<a[i].length;j++)
{
System.out.printf("%2d",a[i][j]);
if(j == a[i].length-1)
{
System.out.println();
}else
System.out.print(",");
}
}
}
输出为:
解决上面的笔试题目:
最简单的方式两个for循环:
public static void main(String[] args) {
int[][] a = new int[2][4];
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < a.length; i++){
for (int j = 0; j < a[0].length; j++){
a[i][j] = scanner.nextInt();
}
}
int n = scanner.nextInt();
System.out.println(a.length);
System.out.println(a[0].length);
for (int i = 0; i < a.length; i++){
for (int j = 0; j < a[0].length; j++){
if(a[i][j]==n){
System.out.println("yes");
return;
}
}
}
System.out.println("no");
}
现在要求你用一个循环写出来:
public static void main(String[] args) {
int[][] a = new int[2][4];
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < a.length; i++){
for (int j = 0; j < a[0].length; j++){
a[i][j] = scanner.nextInt();
}
}
int n = scanner.nextInt();
System.out.println(a.length);//行
System.out.println(a[0].length);//列
int x = 0;//定义行
int y = 0;//定义列
while (true){
if (a[x][y]==n){ //找到之后输出
System.out.println("yes");
return; //注意该题是问是否存在,找到第一个直接结束方法即可
}else{
if (y==a[0].length-1){ //如果已经是本行的末尾
if (x!=(a.length-1)) { //且不是最后一行
x++; //开始下一行
}else{ //如果已经是最后一行
System.out.println("no");
return;//结束方法
}
y=0; //开始下一行,从第一个开始
}else{ //如果不是本行的末尾,找下一个位置
y++;
}
}
}
}