1 1 1 0 1
0 1 0 0 0
0 0 0 0 0
1 0 1 0 0
0 0 0 0 1
[(0,0) (2,0)] 3


아래 코드를 실행하면 결과가 위처럼 나오거든요??

근데 이게 배열크기가 정해져있고 랜덤으로 0과 1을 생성해서

그 크기와 왼쪽위 x,y좌표랑 오른쪽아래x,y로 위치를 표시 하는건데요...


제가 입력을 파일로 받고 입력파일의 첫줄에 최대차이(d) 너비 n,m 이 주어지고 다음 줄부터 배열을 받아서 배열 최소값을 찾아서 최대 차이만큼의 숫자를 찾아서 0과 1로 나타내주는 코드가 있거든요.


이 초록색 코드가 입력인데 밑에있는 코드의 getarray 부분에 이 초록코드가 입력으로 들어가게 하고싶은데  코드좀 이어주실 자바 고수분ㅠㅠ 도와주세요ㅠㅠ

public class array {
 static ArrayList list = new ArrayList();
    public static void main(String[] args) throws Exception {
        int d = 0;
        int n;
        int m;
        int arr[][] = null;
        int min = 10001;
        // 파일 읽기
        File f = new File("c:/Users/ㅇㅇ/desktop/ins.txt");
        FileReader fr = null;
        try {
            fr = new FileReader(f);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        BufferedReader br = new BufferedReader(fr);
        try {
            String line;
            line = br.readLine();
            StringTokenizer st = new StringTokenizer(line, " ");
            d = Integer.valueOf(st.nextToken());
            n = Integer.valueOf(st.nextToken());
            m = Integer.valueOf(st.nextToken());
 
            arr = new int[m][n];
            for (int i = 0; i < m && (line = br.readLine()) != null; i++) {
                arr[i] = new int[n];
                st = new StringTokenizer(line, " ");
                for (int j = 0; j < n && st.hasMoreTokens(); j++) {
                    arr[i][j] = Integer.valueOf(st.nextToken());
                    min = min > arr[i][j] ? arr[i][j] : min;
                }
            }
        }
        catch (IOException e) {
            e.printStackTrace();
        } finally {
            br.close();
            fr.close();
        }
 
        // 배열 출력
     
       
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr[i].length; j++) {
                    int 찾기 = 0;
                    for (int k = min; k <= min + d; k++) {
                        if (arr[i][j] == k)
찾기= 1;
                    }
                   System.out.print(찾기+" ");
                }
                System.out.println();
           
        }
    }
}


package pro1;

import java.util.*;
import java.io.*;
import pro1.array;

public class Rectangle {
 static ArrayList list = new ArrayList();

   static Random r = new Random();

   public static void main(String[] args) throws Exception {
       find(getArray());
   }
  
   static boolean[][] getArray() {

     boolean[][] arr = new boolean[5][5];

     for (int i=0; i<arr.length; i++) {

       for (int j=0; j<arr[i].length; j++) {

         arr[i][j] = r.nextBoolean();

         System.out.print(arr[i][j] ? "1 " : "0 ");

       }

       System.out.println();

     }

     return arr;

   }
  
   static void find(boolean[][] b) {

     list.clear();

     // 각 셀을 하나씩 찾아간다.

     for (int i=0; i<b.length; i++) {

       for (int j=0; j<b[i].length; j++) {

         if (b[i][j]) { // true(1)이면 거기에서 부터 찾는다.

           visit(i, j, b);

         }

       }

     }

     // 가장 큰 사각형이 여러개 있을 수 있으므로

     // 리스트에 모두 담아 놓고 출력한다. i<list.size

     for (int i=0; i<1; i++)

       System.out.println(list.get(i));

     System.out.println("\n");

   }

   static void visit(int r, int c, boolean[][] b) {

     int colStart = c, colEnd = c;

     int rowStart = r, rowEnd = r;

    

     // 가로로 1로 끝나는 부분을 찾는다.

     for (int i=c+1; i<b[r].length; i++) {

       if (b[r][i])

         colEnd = i;

       else

         break;

     }

     // 세로로 1로 끝나는 부분을 찾는다.

     for (int i=r+1; i<b.length; i++) {

       if (b[i][c])

         rowEnd = i;

       else

         break;

     }

     // 가로측 방향으로 직사각형을 찾는다.

     int subColEnd = colEnd;

     for (int i=r; i<=rowEnd; i++) {

       for (int j=c; j<=colEnd; j++) {

         if (!b[i][j] && j-1<subColEnd) {

           subColEnd = j-1;

           break;

         }

       }

       add(new Square(colStart, rowStart, subColEnd, i));

     }

    

     // 세로측 방향으로 직사각형을 찾는다.

     int subRowEnd = rowEnd;

     for (int i=c; i<=colEnd; i++) {

       for (int j=r; j<=rowEnd; j++) {

         if (!b[j][i] && j-1<subRowEnd) {

           subRowEnd = j-1;

           break;

         }

       }

       add(new Square(colStart, rowStart, i, subRowEnd));

     }

   }

   // 리스트의 원소와 비교하여 지우거나 넣거나. 무시하거나..

   static void add(Square s) {

     if (list.size() == 0)

       list.add(s);

     else {

       Square temp = (Square)list.get(0);

       if (s.getArea() > temp.getArea() ) {

         list.clear();

         list.add(s);

       } else if (s.getArea() == temp.getArea() ) {

         for (int i=0; i<list.size(); i++)

           if (s.equals(list.get(i)))

             return;

         list.add(s);

       }

     }

   }

 }


 class Square {

   int ux;

   int uy;

   int dx;

   int dy;

   public Square (int a, int b, int c, int d) {

     ux = a;

     uy = b;

     dx = c;

     dy = d;

   }

   public int getArea() {

       return ((dy - uy) +1) * ((dx - ux)+1); // 세로 * 가로

   }

   public String toString() {

     return "[(" + (ux) + "," + (uy) + ") (" + (dx) + "," + (dy) + ")] " + getArea();

   }

   public boolean equals(Object o) {

     Square s = (Square)o;

     if (     ux==s.ux

         && uy==s.uy

         && dx==s.dx

         && dy==s.dy)

       return true;

     return false;

   }

 }