亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java實現的按照順時針或逆時針方向輸出一個數字矩陣功能示例

2024-07-13 10:16:19
字體:
來源:轉載
供稿:網友

本文實例講述了Java實現的按照順時針或逆時針方向輸出一個數字矩陣功能。分享給大家供大家參考,具體如下:

題目:按照指定的長寬和輸出方向,從外向內打印一個從 1 開始的數字矩陣,矩陣的開始位置在左上角。如下圖

Java,順時針,逆時針,輸出,數字矩陣

代碼及注釋如下:

public class NumberMatrix {  public static void main(String[] args) {    int width = 25;    int height = 12;    boolean clockwise = false;    System.out.println("VeVb武林網測試結果:");    outputMatrix(width, height, clockwise);  }  /**   * 按照指定的長寬和輸出方向,從外向內打印一個從 1 開始的數字矩陣,矩陣的開始位置在左上角。   *   * @param width   矩陣寬度   * @param height  矩陣高度   * @param clockwise 是否是順時針方向   */  private static void outputMatrix(int width, int height, boolean clockwise) {    // 首先判斷最大數字的位數,以決定輸出如何對齊    int numLength = (int) Math.log10(width * height) + 1;    // 決定輸出的格式(最大位數 + 1個空格)    String format = "%" + (numLength + 1) + "d";    // 定義要輸出的二維數組,注意維度是從高到低的    // 此時 matrix 中所有元素的值都是 0    int[][] matrix = new int[height][width];    // 定義一個位置指針和一個計數器,位置指針進行移動,而計數器負責遞增,遞增后的數字    // 被填充進矩陣,當 width * height 個數字填充完畢,這個矩陣就完成了。    // 注意這里位置指針的第一個元素對應 matrix 的第一個維度 y,第二個元素對應第二個維度 x。    int[] pointer = {0, 0};    int counter = 1;    // 定義當前移動的方向:1、2、3、4 分別表示上、右、下、左。    // 順時針的起始方向為右,逆時針的起始方向為下。    int direction = clockwise ? 2 : 3;    // 開始循環填充,每個填充分為三步    for (int i = 1, max = width * height; i <= max; i++) {      // 1. 填充內容      int y = pointer[0];      int x = pointer[1];      matrix[y][x] = counter;      // 2. 計數器自增      counter += 1;      // 3. 移動到下一個位置,因為這地方比較復雜,所以開個方法實現      direction = move(matrix, width, height, pointer, direction, clockwise);    }    // 矩陣填充完畢,按照正常的方式循環輸出即可    for (int y = 0; y < height; y++) {      for (int x = 0; x < width; x++) {        System.out.printf(format, matrix[y][x]);      }      System.out.println(); // 完成一行后輸出換行    }  }  /**   * 在矩陣中移動   *   * @param matrix  矩陣,用于判斷前進方向的下一個位置是否已經填充了數字,如果是則轉向   * @param width   矩陣的寬   * @param height  矩陣的高   * @param pointer  指針的當前位置。調用本方法后里面的值會改變,除非方法返回 0   * @param direction 指針當前移動的方向   * @param clockwise 是否是要按順時針方向轉向   *   * @return 移動后的新方向(與原來的方向可能相同也可能不同)。如果無法再繼續移動,則返回 0   */  private static int move(int[][] matrix, int width, int height, int[] pointer, int direction, boolean clockwise) {    // 先嘗試按照原來的方向移動到 newPointer    int[] newPointer = moveDirectly(pointer, direction);    // 檢查 newPointer 是否合法,如果合法則將其賦值給 pointer 并保持原來的方向,方法完成    if (isValid(newPointer, matrix, width, height)) {      System.arraycopy(newPointer, 0, pointer, 0, 2);      return direction;    }    // 進行轉向,重新從 pointer 朝新的方向移動    direction = turn(direction, clockwise);    newPointer = moveDirectly(pointer, direction);    // 檢查 newPointer 是否合法(同前面一樣)    if (isValid(newPointer, matrix, width, height)) {      System.arraycopy(newPointer, 0, pointer, 0, 2);      return direction;    }    // 既無法前進也無法轉向,那么無法繼續移動。    return 0;  }  // 判斷矩陣中指定的位置是否可以填充  private static boolean isValid(int[] newPointer, int[][] matrix, int width, int height) {    // 位置不能超出矩陣范圍    if (newPointer[0] >= height        || newPointer[0] < 0        || newPointer[1] >= width        || newPointer[1] < 0) {      return false;    }    // 位置的內容應該為空    if (matrix[newPointer[0]][newPointer[1]] != 0) {      return false;    }    return true;  }  // 轉向。根據我們對 direction 的定義,順時針就是 +1,逆時針就是 -1  private static int turn(int direction, boolean clockwise) {    int newDirection = clockwise ? direction + 1 : direction - 1;    if (newDirection > 4) {      newDirection = 1;    } else if (newDirection < 1) {      newDirection = 4;    }    return newDirection;  }  /**   * 朝指定的方向移動,并返回新的位置   *   * @param pointer  當前位置   * @param direction 方向   *   * @return 新的位置   */  private static int[] moveDirectly(int[] pointer, int direction) {    int y = pointer[0];    int x = pointer[1];    switch (direction) {      case 1:        return new int[]{y - 1, x};      case 2:        return new int[]{y, x + 1};      case 3:        return new int[]{y + 1, x};      case 4:        return new int[]{y, x - 1};    }    throw new IllegalArgumentException("方向不正確: " + direction);  }}

運行結果:

Java,順時針,逆時針,輸出,數字矩陣

 

希望本文所述對大家java程序設計有所幫助。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久一区| 色先锋资源久久综合5566| 91精品国产99久久久久久| 久久视频中文字幕| 久久精品国产综合| 亚洲肉体裸体xxxx137| 国产精品久久999| 日韩激情第一页| 日韩av在线免费播放| 亚洲成人久久久久| 成人黄色大片在线免费观看| 亚洲国产欧美精品| 韩国日本不卡在线| 成人精品网站在线观看| 久久久999精品| 亚洲欧美日韩天堂一区二区| 国产午夜精品一区二区三区| 亚洲人成电影网站色www| 久久久久久国产免费| 2019av中文字幕| 欧美性视频精品| 国产一区二区三区网站| 久久视频在线视频| 一区二区欧美激情| 亚洲女性裸体视频| 欧美交受高潮1| 亚洲国产中文字幕久久网| 亚洲乱码一区av黑人高潮| 热99精品里视频精品| 国产精品三级网站| 97免费在线视频| 亚洲美女视频网| 亚洲性视频网址| 九九久久久久99精品| 久久精品99久久久久久久久| 日韩精品在线观看一区二区| 韩国19禁主播vip福利视频| 日韩av一卡二卡| 91在线观看免费观看| 69久久夜色精品国产7777| 51视频国产精品一区二区| 亚洲天堂男人的天堂| 国产欧美日韩丝袜精品一区| 国产不卡在线观看| 欧美日韩视频在线| 伊人久久久久久久久久| 欧美肥臀大乳一区二区免费视频| 成人av资源在线播放| 久久国产精品网站| 日韩在线观看免费网站| 亚洲精品动漫100p| 国产高清在线不卡| 亚洲成人免费在线视频| 国产欧美一区二区| 日本不卡视频在线播放| 日韩美女免费线视频| 国产精品久久久久久av福利| 亚洲第一视频在线观看| 国产一区在线播放| 国产精品视频一区国模私拍| 在线精品国产欧美| 亚洲精品久久久久中文字幕欢迎你| 精品国产乱码久久久久久虫虫漫画| 国产va免费精品高清在线观看| 欧美中文字幕视频在线观看| 国产精品久久久久久av下载红粉| 欧美壮男野外gaytube| 亚洲精品国产品国语在线| 九色成人免费视频| 在线精品国产欧美| 日本精品免费观看| 久久久久久免费精品| 亚洲图片欧洲图片av| 成人免费自拍视频| 亚洲午夜激情免费视频| 亚洲国产精品久久精品怡红院| 91九色视频导航| 2024亚洲男人天堂| 米奇精品一区二区三区在线观看| 国产精品永久免费视频| 57pao成人国产永久免费| 国产精品美女www爽爽爽视频| 欧美国产亚洲精品久久久8v| 欧美性色19p| 日韩高清电影免费观看完整版| 国产精品久久久久久久7电影| 91日韩在线播放| 超在线视频97| 中文字幕亚洲一区在线观看| 国产精品三级网站| www.亚洲免费视频| 精品一区二区三区三区| 欧美性一区二区三区| 亚洲国产中文字幕久久网| 日韩不卡中文字幕| 亚洲欧美日韩国产中文专区| 亚洲欧美999| 国产美女高潮久久白浆| 国产91露脸中文字幕在线| 国产精品视频免费观看www| 国产成人精品免高潮在线观看| 国产成人福利视频| 欧美日韩另类视频| 亚洲成成品网站| 欧美激情影音先锋| 国产福利精品av综合导导航| 在线播放精品一区二区三区| 欧美日韩日本国产| 午夜精品一区二区三区在线视| 国产一区二区三区高清在线观看| 欧洲亚洲妇女av| 久久久精品一区| 久久久国产在线视频| 日韩av在线免费看| 国产亚洲成av人片在线观看桃| 亚洲免费一级电影| 色偷偷偷亚洲综合网另类| 久久亚洲精品小早川怜子66| 国产福利精品av综合导导航| 色777狠狠综合秋免鲁丝| 日韩欧美在线字幕| 亚洲无亚洲人成网站77777| 91嫩草在线视频| 欧美亚洲视频一区二区| 亚洲成人激情在线| 国产精品亚发布| 青草青草久热精品视频在线观看| 午夜精品一区二区三区在线播放| 亚洲一区二区三区毛片| 日韩av一区二区在线| 在线亚洲男人天堂| 蜜臀久久99精品久久久久久宅男| 国产精品96久久久久久又黄又硬| 国产精品福利在线| 亚洲欧美在线磁力| 国产精品第8页| 69久久夜色精品国产7777| 国产97在线亚洲| 国产97在线|日韩| 亚洲精品乱码久久久久久金桔影视| 国产精品福利观看| 亚洲自拍偷拍色片视频| 57pao成人永久免费视频| 亚洲福利精品在线| 国产精品美女免费看| 蜜臀久久99精品久久久无需会员| 久久中文字幕国产| 久久这里有精品| 亚洲第一区中文字幕| 日韩av在线影院| 国产精品一区二区三区久久| 国产一区二区三区三区在线观看| 欧美在线视频播放| 九色91av视频| 亚洲a在线播放| 欧美日韩在线影院| 国产视频丨精品|在线观看| 欧美性猛交xxxx乱大交蜜桃| 伦伦影院午夜日韩欧美限制| 欧美精品video| 日韩成人网免费视频| 午夜免费在线观看精品视频| 九九精品视频在线| 中文字幕9999|