日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java二維數組實現數字拼圖效果

瀏覽:26日期:2022-08-08 17:41:32

二維數組實現數字拼圖,供大家參考,具體內容如下

二維數組可以自己隨意定義大小,通過方法判斷來實現對所有的數字進行隨機打亂,并可以通過移動來正確還原,并可以判斷0(表示空格)是否可以移動,是否在范圍內。

public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[][] arrays = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 0 } }; int sum = 1; String direction; bianLi(arrays); daLuanErWeiShuZu(arrays); System.out.println('========================================'); while (true) { bianLi(arrays); if (isOk(arrays)) { break; } sum++; try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println('請輸入移動方向(W 上、S 下、A 左、D 右)'); direction = scanner.next(); switch (direction) { case 'W': case 'w': tiHuanShuZuWeiZhi(returnX(arrays), returnY(arrays), '上', arrays); break; case 'S': case 's': tiHuanShuZuWeiZhi(returnX(arrays), returnY(arrays), '下', arrays); break; case 'A': case 'a': tiHuanShuZuWeiZhi(returnX(arrays), returnY(arrays), '左', arrays); break; case 'D': case 'd': tiHuanShuZuWeiZhi(returnX(arrays), returnY(arrays), '右', arrays); break; default: System.out.println('非法輸入,重新輸入'); break; } } System.out.println('一共走了' + sum + '步'); System.out.println('挑戰成功');}

判斷當前坐標是否可以移動

/** * 判斷當前坐標是否可以移動 * * @param arrays * @return 可以移動返回true */ public static boolean isYiDong(int[][] arrays) { int returnX = returnX(arrays); int returnY = returnY(arrays); System.out.println(returnX + ':' + returnY); if (returnX >= 0 && returnX + 1 < arrays.length && returnY >= 0 && returnY + 1 < arrays.length) { return true; } return false; }

獲取當前0所在行的具體地址

// 獲取0所在行的位置 public static int returnX(int[][] arrays) { for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays[i].length; j++) { if (0 == arrays[i][j]) { return i; } } } return -1; }

獲取當前0所在列的具體地址

// 獲取0所在列的位置 public static int returnY(int[][] arrays) { for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays[i].length; j++) { if (0 == arrays[i][j]) { return j; } } } return -1; }

二維數組隨機打亂,需要判斷左上角、右上角、左下角、右下角、中間、上中、下種、左中、右中,那些方向可以移動,生成隨機數來確定移動方向

// 二維數組隨機打亂 public static void daLuanErWeiShuZu(int[][] arrays) { for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays[i].length; j++) { // 左上 if (i == 0 && j == 0) { // 根據生成的隨機數確定向右邊邊移動還是向下移動 if (ouShuOrJiShu()) { tiHuanShuZuWeiZhi(i, j, '下', arrays); } else { tiHuanShuZuWeiZhi(i, j, '右', arrays); } } // 右上 if (i == 0 && j == arrays[0].length - 1) { // 根據生成的隨機數確定向左邊邊移動還是向下移動 if (ouShuOrJiShu()) { tiHuanShuZuWeiZhi(i, j, '下', arrays); } else { tiHuanShuZuWeiZhi(i, j, '左', arrays); } } // 左下 if (i == arrays.length - 1 && j == 0) { // 根據生成的隨機數確定向左邊邊移動還是向下移動 if (ouShuOrJiShu()) { tiHuanShuZuWeiZhi(i, j, '上', arrays); } else { tiHuanShuZuWeiZhi(i, j, '右', arrays); } } // 右下 if (i == arrays.length - 1 && j == arrays[i].length - 1) { // 根據生成的隨機數確定向左邊邊移動還是向下移動 if (ouShuOrJiShu()) { tiHuanShuZuWeiZhi(i, j, '上', arrays); } else { tiHuanShuZuWeiZhi(i, j, '左', arrays); } } // 上中 if (i == 0 && j > 0 && j < arrays[i].length - 1) { switch (oneToThree(3)) { case 0: tiHuanShuZuWeiZhi(i, j, '右', arrays); break; case 1: tiHuanShuZuWeiZhi(i, j, '下', arrays); break; case 2: tiHuanShuZuWeiZhi(i, j, '左', arrays); break; default: break; } } // 左中 if (j == 0 && i > 0 && i < arrays.length - 1) { switch (oneToThree(3)) { case 0: tiHuanShuZuWeiZhi(i, j, '上', arrays); break; case 1: tiHuanShuZuWeiZhi(i, j, '右', arrays); break; case 2: tiHuanShuZuWeiZhi(i, j, '下', arrays); break; default: break; } } // 下中 if (i == arrays.length - 1 && j > 0 && j < arrays[i].length - 1) { switch (oneToThree(3)) { case 0: tiHuanShuZuWeiZhi(i, j, '上', arrays); break; case 1: tiHuanShuZuWeiZhi(i, j, '右', arrays); break; case 2: tiHuanShuZuWeiZhi(i, j, '左', arrays); break; default: break; } } // 右中 if (j == arrays[i].length - 1 && i > 0 && i < arrays[i].length - 1) { switch (oneToThree(3)) { case 0: tiHuanShuZuWeiZhi(i, j, '上', arrays); break; case 1: tiHuanShuZuWeiZhi(i, j, '左', arrays); break; case 2: tiHuanShuZuWeiZhi(i, j, '下', arrays); break; default: break; } } if (i > 0 && j > 0 && i < arrays.length - 2 && j < arrays[i].length - 2) { switch (oneToThree(4)) { case 0: tiHuanShuZuWeiZhi(i, j, '上', arrays); break; case 1: tiHuanShuZuWeiZhi(i, j, '右', arrays); break; case 2: tiHuanShuZuWeiZhi(i, j, '下', arrays); break; case 3: tiHuanShuZuWeiZhi(i, j, '左', arrays); break; default: break; } } } } }

該方法實現對0的位置和需要替換位置數據的替換,并對0范圍進行驗證,怕0出現數組下標越位。

/** * 根據輸入的數據,對二維數組進行數據替換 * * @param i 高位坐標 * @param j 地位坐標 * @param direction 移動方向 * @param arrays 需要交換數據的數組 */ public static void tiHuanShuZuWeiZhi(int i, int j, String direction, int[][] arrays) { int tem = -1; switch (direction) { case '上': if (i > 0) { tem = arrays[i][j]; arrays[i][j] = arrays[i - 1][j]; arrays[i - 1][j] = tem; } break; case '下': if (i < arrays.length - 1) { tem = arrays[i][j]; arrays[i][j] = arrays[i + 1][j]; arrays[i + 1][j] = tem; } break; case '左': if (j > 0) { tem = arrays[i][j]; arrays[i][j] = arrays[i][j - 1]; arrays[i][j - 1] = tem; } break; case '右': if (j < arrays.length - 1) { tem = arrays[i][j]; arrays[i][j] = arrays[i][j + 1]; arrays[i][j + 1] = tem; } break; default: break; } }

完整代碼如下

import java.util.Random;import java.util.Scanner;public class Demo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[][] arrays = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 0 } }; int sum = 1; String direction; bianLi(arrays); daLuanErWeiShuZu(arrays); System.out.println('========================================'); while (true) { bianLi(arrays); if (isOk(arrays)) { break; } sum++; try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println('請輸入移動方向(W 上、S 下、A 左、D 右)'); direction = scanner.next(); switch (direction) { case 'W': case 'w': tiHuanShuZuWeiZhi(returnX(arrays), returnY(arrays), '上', arrays); break; case 'S': case 's': tiHuanShuZuWeiZhi(returnX(arrays), returnY(arrays), '下', arrays); break; case 'A': case 'a': tiHuanShuZuWeiZhi(returnX(arrays), returnY(arrays), '左', arrays); break; case 'D': case 'd': tiHuanShuZuWeiZhi(returnX(arrays), returnY(arrays), '右', arrays); break; default: System.out.println('非法輸入,重新輸入'); break; } } System.out.println('一共走了' + sum + '步'); System.out.println('挑戰成功'); }// /**// * 判斷當前坐標是否可以移動// * // * @param arrays// * @return 可以移動返回true// */// public static boolean isYiDong(int[][] arrays) {// int returnX = returnX(arrays);// int returnY = returnY(arrays);// System.out.println(returnX + ':' + returnY);// if (returnX >= 0 && returnX + 1 < arrays.length && returnY >= 0 && returnY + 1 < arrays.length) {// return true;// }// return false;// } /** * * @param arrays 需要驗證的數據 * @return 成功返回true */ public static boolean isOk(int[][] arrays) { int sum = 1; for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays.length; j++) { if (sum == 9) { sum = 0; } if (arrays[i][j] != sum) { return false; } sum++; } } return true; } // 獲取0所在行的位置 public static int returnX(int[][] arrays) { for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays[i].length; j++) { if (0 == arrays[i][j]) { return i; } } } return -1; } // 獲取0所在列的位置 public static int returnY(int[][] arrays) { for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays[i].length; j++) { if (0 == arrays[i][j]) { return j; } } } return -1; } // 遍歷二維數組 public static void bianLi(int[][] arrays) { for (int[] is : arrays) { for (int is2 : is) { System.out.print(is2 + 't'); } System.out.println(); } } // 二維數組隨機打亂 public static void daLuanErWeiShuZu(int[][] arrays) { for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays[i].length; j++) { // 左上 if (i == 0 && j == 0) { // 根據生成的隨機數確定向右邊邊移動還是向下移動 if (ouShuOrJiShu()) { tiHuanShuZuWeiZhi(i, j, '下', arrays); } else { tiHuanShuZuWeiZhi(i, j, '右', arrays); } } // 右上 if (i == 0 && j == arrays[0].length - 1) { // 根據生成的隨機數確定向左邊邊移動還是向下移動 if (ouShuOrJiShu()) { tiHuanShuZuWeiZhi(i, j, '下', arrays); } else { tiHuanShuZuWeiZhi(i, j, '左', arrays); } } // 左下 if (i == arrays.length - 1 && j == 0) { // 根據生成的隨機數確定向左邊邊移動還是向下移動 if (ouShuOrJiShu()) { tiHuanShuZuWeiZhi(i, j, '上', arrays); } else { tiHuanShuZuWeiZhi(i, j, '右', arrays); } } // 右下 if (i == arrays.length - 1 && j == arrays[i].length - 1) { // 根據生成的隨機數確定向左邊邊移動還是向下移動 if (ouShuOrJiShu()) { tiHuanShuZuWeiZhi(i, j, '上', arrays); } else { tiHuanShuZuWeiZhi(i, j, '左', arrays); } } // 上中 if (i == 0 && j > 0 && j < arrays[i].length - 1) { switch (oneToThree(3)) { case 0: tiHuanShuZuWeiZhi(i, j, '右', arrays); break; case 1: tiHuanShuZuWeiZhi(i, j, '下', arrays); break; case 2: tiHuanShuZuWeiZhi(i, j, '左', arrays); break; default: break; } } // 左中 if (j == 0 && i > 0 && i < arrays.length - 1) { switch (oneToThree(3)) { case 0: tiHuanShuZuWeiZhi(i, j, '上', arrays); break; case 1: tiHuanShuZuWeiZhi(i, j, '右', arrays); break; case 2: tiHuanShuZuWeiZhi(i, j, '下', arrays); break; default: break; } } // 下中 if (i == arrays.length - 1 && j > 0 && j < arrays[i].length - 1) { switch (oneToThree(3)) { case 0: tiHuanShuZuWeiZhi(i, j, '上', arrays); break; case 1: tiHuanShuZuWeiZhi(i, j, '右', arrays); break; case 2: tiHuanShuZuWeiZhi(i, j, '左', arrays); break; default: break; } } // 右中 if (j == arrays[i].length - 1 && i > 0 && i < arrays[i].length - 1) { switch (oneToThree(3)) { case 0: tiHuanShuZuWeiZhi(i, j, '上', arrays); break; case 1: tiHuanShuZuWeiZhi(i, j, '左', arrays); break; case 2: tiHuanShuZuWeiZhi(i, j, '下', arrays); break; default: break; } } if (i > 0 && j > 0 && i < arrays.length - 2 && j < arrays[i].length - 2) { switch (oneToThree(4)) { case 0: tiHuanShuZuWeiZhi(i, j, '上', arrays); break; case 1: tiHuanShuZuWeiZhi(i, j, '右', arrays); break; case 2: tiHuanShuZuWeiZhi(i, j, '下', arrays); break; case 3: tiHuanShuZuWeiZhi(i, j, '左', arrays); break; default: break; } } } } } /** * 判斷是否是偶數 * * @return 偶數返回true */ public static boolean ouShuOrJiShu() { return new Random().nextInt(1000) % 2 == 0 ? true : false; } /** * * @param n 需要模的值 * @return 返回0-(n-1)的值 */ public static int oneToThree(int n) { return new Random().nextInt(1000) % n; } /** * 根據輸入的數據,對二維數組進行數據替換 * * @param i 高位坐標 * @param j 地位坐標 * @param direction 移動方向 * @param arrays 需要交換數據的數組 */ public static void tiHuanShuZuWeiZhi(int i, int j, String direction, int[][] arrays) { int tem = -1; switch (direction) { case '上': if (i > 0) { tem = arrays[i][j]; arrays[i][j] = arrays[i - 1][j]; arrays[i - 1][j] = tem; } break; case '下': if (i < arrays.length - 1) { tem = arrays[i][j]; arrays[i][j] = arrays[i + 1][j]; arrays[i + 1][j] = tem; } break; case '左': if (j > 0) { tem = arrays[i][j]; arrays[i][j] = arrays[i][j - 1]; arrays[i][j - 1] = tem; } break; case '右': if (j < arrays.length - 1) { tem = arrays[i][j]; arrays[i][j] = arrays[i][j + 1]; arrays[i][j + 1] = tem; } break; default: break; } }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久久久久免费视频| 久久蜜桃av| 丝袜亚洲另类欧美| 在线视频精品| se01亚洲视频| 久久国产电影| 亚洲精品一二三区区别| 91高清一区| 夜夜精品视频| 一区二区三区四区在线观看国产日韩| 亚洲欧洲另类| 香蕉久久夜色精品国产| 久久亚洲电影| 日本一不卡视频| 欧美另类中文字幕| 国产精品一国产精品| 国产精品激情| 国产一区2区在线观看| 97精品中文字幕| 国产网站在线| 国产一区二区三区四区五区| 日韩电影免费网站| 精品在线播放| 男女男精品网站| 亚洲精品无吗| 国产午夜一区| 国产精品久久久久蜜臀| 成人羞羞视频播放网站| 91九色精品| 亚洲精品高潮| 国产精品白丝一区二区三区| 久久电影tv| 欧美激情91| 亚洲涩涩在线| 国产午夜精品一区二区三区欧美| 中文字幕亚洲在线观看| 国产日韩欧美中文在线| 精品久久视频| 亚洲性色视频| 中文字幕日韩高清在线 | 色欧美自拍视频| 激情六月综合| 亚洲97av| 色婷婷色综合| 国产精品日韩| 国产精品久久久久毛片大屁完整版| 亚洲精品88| 亚洲精品国模| 色爱综合网欧美| 中文字幕成人| 在线天堂中文资源最新版| 亚洲一区日韩| 久久亚洲黄色| 在线视频免费在线观看一区二区| 日韩专区视频网站| 伊人网在线播放| 日本中文字幕不卡| 欧美sss在线视频| 日本少妇一区二区| 久久精品电影| 国产三级精品三级在线观看国产| 成人羞羞在线观看网站| 中文字幕免费精品| 91欧美日韩| 亚洲日本免费电影| 福利一区二区免费视频| 影音先锋久久精品| av综合电影网站| 欧美日韩精品一区二区三区视频 | 激情综合在线| 97精品久久| 99热精品久久| 美女久久精品| 综合激情在线| 久久久久久久久久久妇女| 国产精品一区二区美女视频免费看| 国产一区清纯| 狠狠久久伊人中文字幕| 视频一区日韩精品| 久久视频精品| 精品视频一区二区三区四区五区 | 快she精品国产999| 亚洲黄色免费av| 国产欧美激情| 免费美女久久99| 亚洲韩日在线| 久久电影tv| 老鸭窝一区二区久久精品| 中文字幕av亚洲精品一部二部 | 久久久一本精品| 麻豆视频久久| 视频一区中文字幕精品| 91九色精品国产一区二区| 手机在线电影一区| 国产精品激情| 欧美精品国产一区| 在线国产精品一区| 久久www成人_看片免费不卡| 亚洲久久视频| 日韩精品一区第一页| 欧美亚洲精品在线| 欧美二三四区| 久久uomeier| 国产精品久久久久久久久久10秀| 国产日韩三级| 欧美性www| 日本aⅴ精品一区二区三区| 蜜臀av一区二区在线免费观看| 波多野结衣一区| av亚洲一区二区三区| 黄毛片在线观看| 精品国产乱码久久久久久樱花| 国产精品高清一区二区| 日韩免费精品| 中文字幕日韩欧美精品高清在线| 免费久久99精品国产自在现线| 91超碰国产精品| 99视频精品全部免费在线视频| 欧美精选视频一区二区| 日韩一区自拍| 欧美久久天堂| 色在线中文字幕| 国产传媒av在线| 四虎成人av| 一区二区三区四区日本视频| 日韩在线精品| 久久激情婷婷| 一区在线视频观看| 欧美专区一区二区三区| 中文字幕成人| 国产日韩亚洲欧美精品| 欧美激情99| av最新在线| 天堂日韩电影| 日韩一级网站| 免费黄网站欧美| 亚洲精品在线二区| 视频一区欧美精品| 中文字幕亚洲影视| 欧美天堂一区二区| 牛牛精品成人免费视频| 国产一区二区三区探花| 国产精品久久久久蜜臀| 99久久久久| 人人爽香蕉精品| 国产图片一区| 欧美成人一二区| 日韩电影免费在线观看| 国产精品99一区二区| 免费日韩一区二区| 日韩精品视频在线看| 国产精品亚洲欧美| 欧美91在线|欧美| 91亚洲国产成人久久精品| 久久久精品五月天| 久久av在线| 国产精品永久| www在线观看黄色| 女同性一区二区三区人了人一| 亚洲在线国产日韩欧美| 日韩精品三区四区| 久久女人天堂| 久久蜜桃资源一区二区老牛| 一区在线观看| 国产日韩欧美中文在线| se01亚洲视频| 亚洲性视频在线| 国产九一精品| 久久国产影院| 亚洲精品欧美| 水蜜桃久久夜色精品一区| 91成人超碰| 欧美亚洲综合视频| 天堂√中文最新版在线| 免费欧美日韩| 精品久久中文| 国产精品嫩草99av在线| 国产视频一区二区在线播放| 成人午夜精品| 日韩国产在线观看一区| 日韩欧美精品| 亚洲精品进入| 亚洲天堂资源| 亚洲欧美久久精品| 国产精品精品| 亚洲免费成人av在线| av免费不卡国产观看| 亚洲欧美日韩国产一区| 久久精品国产999大香线蕉| 亚洲香蕉网站| 国产精品天天看天天狠| 1024精品久久久久久久久| 国产精品久久久亚洲一区| 午夜久久美女| 国产精东传媒成人av电影| 女同性一区二区三区人了人一| 国产毛片精品久久| 91精品国产乱码久久久久久久| 日本午夜精品视频在线观看| 久久国产电影|