이 기사에서는 디지털 매트릭스 기능을 시계 방향 또는 시계 방향으로 출력하는 Java 구현에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
주제 : 지정된 길이와 너비 및 출력 방향에 따라 외부에서 왼쪽 상단까지 1에서 시작하는 숫자 매트릭스를 인쇄합니다. 다음 그림
코드 및 댓글은 다음과 같습니다.
public class numbermatrix {public static void main (String [] args) {int width = 25; int 높이 = 12; 부울 시계 방향 = 거짓; System.out.println ( "wulin.com 테스트 결과 :"); OutputMatrix (너비, 높이, 시계 방향); } /*** 지정된 길이와 너비 및 출력 방향에 따라 외부에서 내부로 1을 시작하는 숫자 행렬을 인쇄하며 행렬의 시작 위치는 왼쪽 상단에 있습니다. * * @param 너비 행렬 폭 // 출력 형식 (최대 자리 수 + 1 공간) 문자열 형식 = "%" + (numlength + 1) + "d"; // 출력이 될 2 차원 배열을 정의하고, 치수는 높음에서 낮은 // 이시기에 매트릭스의 모든 요소의 값은 0 int [] [] matrix = new int [width]; // 위치 포인터와 카운터를 정의하면 위치 포인터가 움직이고 카운터가 증가 할 책임이 있습니다. 증분 숫자 //는 행렬에 채워집니다. 너비 * 높이 숫자가 채워지면이 매트릭스가 완료됩니다. // 위치 포인터의 첫 번째 요소는 행렬의 첫 번째 차원 Y에 해당하고 두 번째 요소는 두 번째 차원 x에 해당합니다. int [] 포인터 = {0, 0}; int 카운터 = 1; // 현재 이동 방향을 정의합니다. 1, 2, 3 및 4는 각각 상단, 오른쪽, 하부 및 왼쪽을 나타냅니다. // 시계 방향으로 시작 방향이 옳고 반 시계 방향으로 시작 방향이 바닥입니다. int Direction = 시계 방향? 2 : 3; // 시작 루프 충전, 각 충전물은 (int i = 1, max = width * height; i <= max; i ++)에 대한 세 단계입니다. {// 1. Content y = pointer [0]; int x = 포인터 [1]; 매트릭스 [y] [x] = 카운터; // 2. 카운터는 카운터 += 1으로 증가합니다. // 3.이 장소가 더 복잡하기 때문에 다음 위치로 이동하고 방향을 구현하는 방법을 열어 = 이동 (매트릭스, 너비, 높이, 포인터, 방향, 시계 방향); } // 매트릭스가 채워지면 (int y = 0; y <높이; y ++) {for (int x = 0; x <width; x ++) {system.out.printf (format, matrix [y] [x]); } system.out.println (); // 한 줄이 완료된 후 출력 라인이 나온 후}} /** * Move * * @param 매트릭스 매트릭스는 전방 방향의 다음 위치에 숫자로 채워 졌는지 여부를 결정하는 데 사용됩니다. 그렇다면 * @param width matrix 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스로 돌아가는 경우 * @param width matrix matrix matrix 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스로 돌아갑니다. 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 매트릭스 내부 값은이 메소드를 호출 한 후에 내부 값이 변경됩니다. 또는 원래 방향과 다름). 계속 이동할 수없는 경우 0 */ private static int move (int [] [] matrix, int width, int height, int [] pointer, int direction, boolean int direction) {// newPointer int [] newPointer = 이동식 (포인터, 방향)으로 이동하려고합니다. // NewPointer가 합법적인지 확인하십시오. 합법적 인 경우 포인터에 할당하고 원래 방향을 유지하십시오. 이 방법은 (isvalid (newpointer, matrix, 너비, 높이)) {System.ArrayCopy (NewPointer, 0, 포인터, 0, 2); 반환 방향; } // 새로운 방향으로 포인터에서 다시 회전하고 다시 이동합니다. = 회전 (방향, 시계 방향); NewPointer = 이동식 (포인터, 방향); // if (iSvalid (NewPointer, Matrix, Width, Height)) {System.ArrayCopy (NewPointer, 0, Pointer, 0, 2); 반환 방향; } // 앞으로 이동하거나 돌릴 수 없으므로 계속 움직일 수 없습니다. 반환 0; } // 매트릭스의 지정된 위치가 개인 정적 부울 IsValid (int [] newPointer, int []]로 채워질 수 있는지 결정합니다 (int [] []] int width, int height) {// 위치는 (newPointer [0]> = 높이 [0] || newPointer [1] || newPointer [|| width | | | 거짓을 반환합니다. } // 위치의 내용은 (matrix [newPointer [0]] [NewPointer [1]! = 0) {return false; } true를 반환합니다. } // 조종사. 방향의 정의에 따르면 시계 방향은 +1, 카운터 시계 반대 방향은 -1 개인 정적 int 턴 (int 방향, 부울 시계 방향) {int newdirection = clockwise? 방향 + 1 : 방향 -1; if (newdirection> 4) {NewDirection = 1; } else if (newDirection <1) {newDirection = 4; } 신생 방향을 반환합니다. } / *** 지정된 방향으로 이동하여 새 위치로 이동** @param pointer current position* @param direction direction** @return new position* / private static int [] stiperticly (int [] pointer, int direction) {int y = 포인터 [0]; int x = 포인터 [1]; 스위치 (Direction) {case 1 : new int [] {y -1, x}를 반환합니다. 사례 2 : 새로운 int [] {y, x + 1}을 반환합니다. 사례 3 : 새로운 int [] {y + 1, x}를 반환합니다. 사례 4 : 새로운 int [] {y, x -1}을 반환합니다. } 새로운 불법 행위 exception을 던지십시오 ( "잘못된 방향 :" + 방향); }}실행 결과 :
Java 알고리즘에 대한 자세한 내용은이 사이트에 관심이있는 독자들이 주제를 볼 수 있습니다. "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약"및 "Java Cache Operation Tips의 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.