赞
踩
*/
- package cn.itcast.demo9;
-
- import java.util.Scanner;
-
- public class dimenArrayTwo2 {
-
- public static void main(String[] args){
- dimenArrayTwo2 dat = new dimenArrayTwo2();
- dat.input();
- }
-
- private void input() {
- Scanner scan = new Scanner(System.in);
- System.out.print("请输入矩阵行数m:");
- int m = scan.nextInt();
- System.out.print("请输入矩阵列数n:");
- int n = scan.nextInt();
- System.out.print("请输入需要搜索的数data:");
- int data = scan.nextInt();
- int[][] arr = new int[m][n];
-
- //判断数据合法
- if(!(m>0 && m<1000 && n>0 && n<1000 && data>0 && data<1000000)){
- System.out.println("please input right number");
- System.exit(0);
- }
- else{
- //构建矩阵
- System.out.println("请输入"+m*n+"个数据(数据间用空格隔开):");
- int arri;
- for(int i=0;i<m;i++){
- for(int j=0;j<n;j++){
- arri = scan.nextInt();
- arr[i][j] = arri;
- }
- }
- }
- boolean flag = findNumber(arr,data);
- if(flag == false){
- System.out.println("No!!");
- }
- else{
- System.out.println("Yes!!");
- }
- }
- private boolean findNumber(int[][] arr, int data) {
- boolean flag = false;
- //先求出m行,n列
- int m = arr.length;
- int n = arr[0].length;
-
- int mrow,ncolumn;
- mrow = 0;
- ncolumn = n - 1;
- //这里的判断循环是从上面定义的值得到的
- while(mrow<m && ncolumn>=0){
- if(arr[mrow][ncolumn] == data){
- flag = true;
- return flag;
- }
- else if(arr[mrow][ncolumn] >data){
- ncolumn--;
- }
- else if(ncolumn<n-1 && arr[mrow][ncolumn] <data){
- ncolumn++;
- }
- else{
- mrow++;
- }
- }
- return flag;
- }
- }

输出结果:
请输入矩阵行数m:3
请输入矩阵列数n:3
请输入需要搜索的数data:5
请输入9个数据(数据间用空格隔开):
1 2 3 4 5 6 7 8 9
Yes!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。