Dieser Artikel beschreibt die Java -Implementierung der Ausgabe einer digitalen Matrixfunktion im Uhrzeigersinn oder gegen den Uhrzeigersinn. Teilen Sie es für Ihre Referenz wie folgt weiter:
Thema: Drucken Sie eine numerische Matrix von 1 von außen nach links an der angegebenen Länge, Breite und Ausgangsrichtung. Die folgende Abbildung
Der Code und die Kommentare sind wie folgt:
public class numbermatrix {public static void main (String [] args) {int width = 25; int Höhe = 12; boolean im Uhrzeigersinn = falsch; System.out.println ("Wulin.com Testergebnisse:"); outputMatrix (Breite, Höhe, im Uhrzeigersinn); } /*** Drucken Sie eine Zahlenmatrix von 1 von außen nach innen entsprechend der angegebenen Länge und Breite und Ausgangsrichtung, und die Ausgangsposition der Matrix befindet sich in der oberen linken Ecke. * * @param breitmatrix breit * @param hohe matrix height * @param im Uhrzeigersinn, ob es im Uhrzeigersinn ist // Bestimmen Sie das Format der Ausgabe (maximale Anzahl von Ziffern + 1 Speicherplatz) String -Format = "%" + (numlenlänge + 1) + "D"; // Definieren Sie das zweidimensionale Array, das ausgegeben werden soll, und beachten Sie, dass die Abmessungen von hoch nach niedrig sind //. Die Werte aller Elemente sind zu diesem Zeitpunkt 0 int [] [] matrix = new int [Höhe] [Breite]; // Definieren Sie einen Positionszeiger und einen Zähler, der Positionszeiger wird bewegt und der Zähler ist für die Inkrementierung verantwortlich. Die inkrementierte Nummer // wird in die Matrix gefüllt. Wenn die Breite * Höhennummern gefüllt sind, ist diese Matrix abgeschlossen. // Beachten Sie, dass das erste Element des Positionszeigers hier der ersten Dimension y der Matrix entspricht, und das zweite Element entspricht der zweiten Dimension x. int [] pointer = {0, 0}; int counter = 1; // Definieren Sie die aktuelle Bewegungsrichtung: 1, 2, 3 und 4 repräsentieren obere, rechte, untere bzw. linke. // Die Startrichtung im Uhrzeigersinn ist richtig und die Startrichtung gegen den Uhrzeigersinn ist unten. int Direction = im Uhrzeigersinn? 2: 3; // Startschleifefüllung starten, jede Füllung beträgt drei Schritte für (int i = 1, max = width * Höhe; i <= max; i ++) {// 1. Füllung Inhalt int y = pointer [0]; int x = pointer [1]; Matrix [y] [x] = Zähler; // 2. Der Zähler wird durch Zähler += 1 erhöht; // 3.. Bewegen Sie sich in die nächste Position, da dieser Ort komplizierter ist, eine Methode zum Implementieren von Direction = Move (Matrix, Breite, Höhe, Zeiger, Richtung, im Uhrzeigersinn); } // Nachdem die Matrix gefüllt ist, können Sie die Ausgabe auf die normale Weise für (int y = 0; y <Höhe; y ++) {for (int x = 0; x <width; x ++) {System.out.Out.printf (Format, Matrix [y] [x]) abschließen; } System.out.println (); // Ausgabestricht nach Abschluss einer Zeile}} /** * Move * * @param Matrix Matrix in der Matrix, mit der festgestellt wurde, ob die nächste Position in Vorwärtsrichtung mit Zahlen gefüllt wurde. If so, turn to * @param width Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix, if so, turn to * @param width Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrixmatrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix. Matrixmatrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix. Matrixmatrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix Matrix. oder anders als die ursprüngliche Richtung). Wenn Sie sich nicht weiter bewegen können, geben Sie 0 */ private static int move (int [] [] matrix, int width, int height, int [] pointer, int -Richtung, boolean im Uhrzeigersinn) {// Versuchen Sie, auf NewPointer int [] NewPointer = bewegt (Zeiger, Richtung) zu wechseln. // Überprüfen Sie, ob NewPointer legal ist. Wenn legal, weisen Sie die ursprüngliche Richtung zu und pflegen Sie es. Die Methode ist abgeschlossen, wenn (isvalid (NewPointer, Matrix, Breite, Höhe)) {System.ArrayCopy (NewPointer, 0, Zeiger, 0, 2); Return Richtung; } // Drehen und bewegen Sie sich erneut vom Zeiger in eine neue Richtungsrichtung = drehen (Richtung, im Uhrzeigersinn); NewPointer = bewegt (Zeiger, Richtung); // Überprüfen Sie, ob NewPointer legal ist (wie zuvor), wenn (isvalid (NewPointer, Matrix, Breite, Höhe)) {System.ArrayCopy (NewPointer, 0, Zeiger, 0, 2); Return Richtung; } // Sie können sich nicht vorwärts bewegen oder drehen, sodass Sie sich also nicht weiter bewegen können. Rückkehr 0; } // Bestimmen Sie, ob die angegebene Position in der Matrix mit privaten statischen booleschen isvalid (int [] NewPointer, int [] [] Matrix, int width, inthohe) {// Die Position nicht überschreiten kann. false zurückgeben; } // Der Inhalt der Position sollte leer sein, wenn (matrix [newpointer [0]] [newpointer [1]]! = 0) {return false; } Return true; } // steuern. Nach unserer Definition der Richtung ist der Uhrzeigersinn +1, gegen den Uhrzeigersinn -1 private statische Int -Wende (int -Richtung, boolean im Uhrzeigersinn) {int newDirection = im Uhrzeigersinn? Richtung + 1: Richtung - 1; if (newDirection> 4) {newDirection = 1; } else if (newDirection <1) {newDirection = 4; } Neudirektion zurückgeben; } / *** Bewegen Sie sich in die angegebene Richtung und kehren Sie zu der neuen Position zurück** @param Zeiger aktuelle Position* @param Richtungsrichtung** @return neue Position* / private static int [] bewegt (int [] pointer, int Richtung) {int y = pointer [0]; int x = pointer [1]; Switch (Richtung) {Fall 1: Neue int [] {y - 1, x} zurückgeben; Fall 2: Neue int [] {y, x + 1} zurückgeben; Fall 3: Neue int [] {y + 1, x} zurückgeben; Fall 4: Neue int [] {y, x - 1} zurückgeben; } neue IllegalArgumentException ("Falsche Richtung:" + Richtung); }}Auslaufergebnisse:
Für weitere Informationen zu Java -Algorithmen können Leser, die an dieser Website interessiert sind, die Themen "Java -Datenstruktur und Algorithmus -Tutorial", "Zusammenfassung der Java -Operation DOM -Knoten -Tipps", "Zusammenfassung der Java -Datei- und Verzeichnisoperationstipps" und "Zusammenfassung der Java -Cache -Operation Tipps" anzeigen
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.