java實現(xiàn)連連看游戲課程設(shè)計
本文為大家分享了JAVA語言課程設(shè)計:連連看小游戲,供大家參考,具體內(nèi)容如下
1.設(shè)計內(nèi)容
界面中有5*10的界面,圖中共有6種不同的圖片,每兩個相同的圖片連接在一起,如果連線中轉(zhuǎn)折的次數(shù)<=3次,兩張圖片可同時削掉,否則不能削去。
2.設(shè)計要求
色彩鮮艷,鼠標(biāo)點擊鍵好用,以固定時間將所有圖片消掉為勝利,若時間到了,圖片還有,則闖關(guān)失敗。
3.設(shè)計思想
1) 搭建界面,首先搭建簡單界面,可以先用按鈕代替圖片,并且行列可以先少做一些,如下圖所示:
2) 每次用戶選擇兩個圖形,如果圖形滿足一定條件(兩個圖形一樣,且這兩個圖形之間存在轉(zhuǎn)彎少于3的路徑),則兩個圖形都能消掉。給定任意具有相同圖形的兩個格子,我們需要尋找這兩個格子之間在轉(zhuǎn)彎最少的情況下,經(jīng)過格子數(shù)目最少的路徑。如果這個最優(yōu)路徑的轉(zhuǎn)彎數(shù)目少于3 ,則這兩個格子可以消去。
3) 定義消掉的方法,此方法可以實現(xiàn),當(dāng)執(zhí)行消掉功能時,可以消除兩個按鈕。
4) 在檢驗兩個方塊能否消掉的時候,我們要讓兩個方塊同時滿足兩個條件才行,就是兩者配對并且連線成功。
分3種情況:(從下面的這三種情況,我們可以知道,需要三個檢測,這三個檢測分別檢測一條直路經(jīng)。這樣就會有三條路經(jīng)。若這三條路經(jīng)上都是空按鈕,那么就剛好是三種直線(兩個轉(zhuǎn)彎點)把兩個按鈕連接起來了)
* 1.相鄰
* 2. 若不相鄰的先在第一個按鈕的同行找一個空按鈕。1).找到后看第二個按鈕橫向到這個空按鈕所在的列是否有按鈕。2).沒有的話再看第一個按鈕到與它同行的那個空按鈕之間是否有按鈕。3).沒有的話,再從與第一個按鈕同行的那個空按鈕豎向到與第二個按鈕的同行看是否有按鈕。沒有的話路經(jīng)就通了,可以消了.
* 3.若2失敗后,再在第一個按鈕的同列找一個空按鈕。1).找到后看第二個按鈕豎向到這個空按鈕所在的行是否有按鈕 2).沒有的話,再看第一個按鈕到與它同列的那個空按鈕之間是否有按鈕。3).沒有的話,再從與第一個按鈕同列的那個空按鈕橫向到與第二個按鈕同列看是否有按鈕。沒有的話路經(jīng)就通了,可以消了。
* 若以上三步都失敗,說明這兩個按鈕不可以消去。
5) 在死鎖的情況下,我們也可以暫時不終止游戲,而是隨機打亂局面(即點擊“重列”按鈕),打破“死鎖”局面。
6) 設(shè)計時間限制,即指定時間內(nèi)沒有消除全部按鈕,則游戲結(jié)束
7) 設(shè)計過關(guān)模式,可以根據(jù)所有按鈕都消除了,或是得分到達(dá)某一個閾值作為過關(guān)的依據(jù)。
8) 每一關(guān)的指定時間應(yīng)該逐漸減少
9) 嘗試將按鈕換成圖片,可以利用數(shù)組定義圖片名稱,然后把隨機選擇按鈕變成隨機選擇數(shù)組下標(biāo),繼而實現(xiàn)選擇圖片的功能
代碼如下:
package test1; import java.awt.BorderLayout; import java.awt.Container; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Timer; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class LianLianKan implements ActionListener { ?? ?JFrame mainFrame; // 主面板 ?? ?Container thisContainer; ?? ?JPanel centerPanel, southPanel, northPanel; // 子面板 ?? ?JButton diamondsButton[][] = new JButton[6][5];// 游戲按鈕數(shù)組 ?? ?JButton exitButton, resetButton, newlyButton; // 退出,重列,重新開始按鈕 ?? ?JLabel fractionLable = new JLabel("0"); // 分?jǐn)?shù)標(biāo)簽 ?? ?JButton firstButton, secondButton; // 分別記錄兩次被選中的按鈕 ?? ?int grid[][] = new int[8][7];// 儲存游戲按鈕位置 ?? ?int score=0; ?? ?static boolean pressInformation = false; // 判斷是否有按鈕被選中 ?? ?int x0 = 0, y0 = 0, x = 0, y = 0, firstMsg = 0, secondMsg = 0; // 游戲按鈕的位置坐標(biāo) ?? ?int i, j, k, n;// 消除方法控制 ?? ?public void init() { ?? ??? ?mainFrame = new JFrame("JKJ連連看"); ?? ??? ?thisContainer = mainFrame.getContentPane(); ?? ??? ?thisContainer.setLayout(new BorderLayout()); ?? ??? ?centerPanel = new JPanel(); ?? ??? ?southPanel = new JPanel(); ?? ??? ?northPanel = new JPanel(); ?? ??? ?thisContainer.add(centerPanel, "Center"); ?? ??? ?thisContainer.add(southPanel, "South"); ?? ??? ?thisContainer.add(northPanel, "North"); ?? ??? ?centerPanel.setLayout(new GridLayout(6, 5)); ?? ??? ?for (int cols = 0; cols < 6; cols++) { ?? ??? ??? ?for (int rows = 0; rows < 5; rows++) { ?? ??? ??? ??? ?diamondsButton[cols][rows] = new JButton(String.valueOf(grid[cols + 1][rows + 1])); ?? ??? ??? ??? ?diamondsButton[cols][rows].addActionListener(this); ?? ??? ??? ??? ?centerPanel.add(diamondsButton[cols][rows]); ?? ??? ??? ?} ?? ??? ?} ?? ??? ?exitButton = new JButton("退出"); ?? ??? ?exitButton.addActionListener(this); ?? ??? ?resetButton = new JButton("重列"); ?? ??? ?resetButton.addActionListener(this); ?? ??? ?newlyButton = new JButton("再來一局"); ?? ??? ?newlyButton.addActionListener(this); ?? ??? ?southPanel.add(exitButton); ?? ??? ?southPanel.add(resetButton); ?? ??? ?southPanel.add(newlyButton); ?? ??? ?fractionLable.setText("分?jǐn)?shù):"+score); ?? ??? ?northPanel.add(fractionLable); ?? ??? ?int width=Toolkit.getDefaultToolkit().getScreenSize().width; ?? ??? ?int height=Toolkit.getDefaultToolkit().getScreenSize().height; ?? ??? ?mainFrame.setBounds((width-500)/2,(height-500)/2, 500, 500); ?? ??? ?mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ?? ??? ?mainFrame.setResizable(false); ?? ??? ?mainFrame.setVisible(true); ?? ?} ?? ?public void randomBuild() { ?? ??? ?int randoms, cols, rows; ?? ??? ?for (int twins = 1; twins <= 15; twins++) { ?//生成15個隨機數(shù) ?? ??? ??? ?randoms = (int) (Math.random() * 15 + 1); ?? ??? ??? ?for (int alike = 1; alike <= 2; alike++) { ? //每次將這個數(shù)放在兩個位置 ?? ??? ??? ??? ?cols = (int) (Math.random() * 6 + 1); ?? ??? ??? ??? ?rows = (int) (Math.random() * 5 + 1); ?//隨機生成數(shù)組坐標(biāo)[cols,rows] ?? ??? ??? ??? ?while (grid[cols][rows] != 0) { ? ? ? ? //如果這個位置已經(jīng)賦值了,重新生成。 ?? ??? ??? ??? ??? ?cols = (int) (Math.random() * 6 + 1); ?? ??? ??? ??? ??? ?rows = (int) (Math.random() * 5 + 1); ?? ??? ??? ??? ?} ?? ??? ??? ??? ?this.grid[cols][rows] = randoms; ? ?//將這個隨機數(shù)賦到數(shù)組中。 ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?//顯示分?jǐn)?shù) ?? ?public void fraction() { ?? ??? ?score+=100; ?? ??? ?fractionLable.setText(score+""); ?? ?} ?? ?//重列方法的實現(xiàn) ?? ?public void reload() { ?? ??? ?int save[] = new int[50]; ?? ??? ?int n = 0, cols, rows; ?? ??? ?int grid[][] = new int[8][7]; ?? ??? ?for (int i = 0; i <= 6; i++) { ?? ??? ??? ?for (int j = 0; j <= 5; j++) { ?? ??? ??? ??? ?if (this.grid[i][j] != 0) { ?? ??? ??? ??? ??? ?save[n] = this.grid[i][j]; ?? ??? ??? ??? ??? ?n++; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?} ?? ??? ?n--; ?? ??? ?this.grid = grid; ?? ??? ?while (n >= 0) { ?? ??? ??? ?cols = (int) (Math.random() * 6 + 1); ?? ??? ??? ?rows = (int) (Math.random() * 5 + 1); ?? ??? ??? ?while (grid[cols][rows] != 0) { ?//如果已經(jīng)賦值了,重新生成 ?? ??? ??? ??? ?cols = (int) (Math.random() * 6 + 1); ?? ??? ??? ??? ?rows = (int) (Math.random() * 5 + 1); ?? ??? ??? ?} ?? ??? ??? ?this.grid[cols][rows] = save[n]; ?? ??? ??? ?n--; ?? ??? ?} ?? ??? ?mainFrame.setVisible(false); ?? ??? ?pressInformation = false; // 這里一定要將按鈕點擊信息歸為初始 ?? ??? ?init(); ?? ??? ?for (int i = 0; i < 6; i++) { ?? ??? ??? ?for (int j = 0; j < 5; j++) { ?? ??? ??? ??? ?if (grid[i + 1][j + 1] == 0) ?? ??? ??? ??? ??? ?diamondsButton[i][j].setVisible(false); ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?public void estimateEven(int placeX, int placeY, JButton bz) { ?? ??? ?if (pressInformation == false) {//如果以前沒點擊過 ?? ??? ??? ?x = placeX; ?? ??? ??? ?y = placeY; ? ? ?//記錄這個按鈕坐標(biāo)[x,y] ?? ??? ??? ?secondMsg = grid[x][y]; ?? ??? ??? ?secondButton = bz;//記錄這個按鈕的信息 ?? ??? ??? ?pressInformation = true; ?? ??? ?} else { ? ? ? ? ? //如果以前點擊過 ?? ??? ??? ?x0 = x;?? ? ?? ??? ??? ?y0 = y; ?? ??? ??? ?firstMsg = secondMsg; ?? ??? ??? ?firstButton = secondButton; ? ?//將上一次的button按鈕信息賦給first ?? ??? ??? ?x = placeX; ?? ??? ??? ?y = placeY; ?? ??? ??? ?secondMsg = grid[x][y]; ? ? ? ?//將這次點擊按鈕的信息記錄下來 ?? ??? ??? ?secondButton = bz; ?? ??? ??? ?if (firstMsg == secondMsg && secondButton != firstButton) { ?? ??? ??? ??? ?xiao(); ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?public void xiao() { // 相同的情況下能不能消去。仔細(xì)分析,不一條條注釋 ?? ??? ?if ((x0 == x && (y0 == y + 1 || y0 == y - 1))|| ((x0 == x + 1 || x0 == x - 1) && (y0 == y))) { // 判斷是否相鄰 ?? ??? ??? ?remove(); ?? ??? ?} else { ?? ??? ??? ?for (j = 0; j < 7; j++) { ?? ??? ??? ??? ?if (grid[x0][j] == 0) { // 判斷第一個按鈕同行哪個按鈕為空 ?? ??? ??? ??? ??? ?if (y > j) { // 如果第二個按鈕的Y坐標(biāo)大于空按鈕的Y坐標(biāo)說明第一按鈕在第二按鈕左邊 ?? ??? ??? ??? ??? ??? ?for (i = y - 1; i >= j; i--) { // 判斷第二按鈕左側(cè)直到第一按鈕中間有沒有按鈕 ?? ??? ??? ??? ??? ??? ??? ?if (grid[x][i] != 0) { ?? ??? ??? ??? ??? ??? ??? ??? ?k = 0;?? ? ?? ??? ??? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ??? ??? ??? ?k = 1; ?? ??? ??? ??? ??? ??? ??? ?} // K=1說明通過了第一次驗證 ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?if (k == 1) { ?? ??? ??? ??? ??? ??? ??? ?linePassOne(); ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?if (y < j) { // 如果第二個按鈕的Y坐標(biāo)小于空按鈕的Y坐標(biāo)說明第一按鈕在第二按鈕右邊 ?? ??? ??? ??? ??? ??? ?for (i = y + 1; i <= j; i++) { // 判斷第二按鈕左側(cè)直到第一按鈕中間有沒有按鈕 ?? ??? ??? ??? ??? ??? ??? ?if (grid[x][i] != 0) { ?? ??? ??? ??? ??? ??? ??? ??? ?k = 0; ?? ??? ??? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ??? ??? ??? ?k = 1; ?? ??? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?if (k == 1) { ?? ??? ??? ??? ??? ??? ??? ?linePassOne(); ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?if (y == j) { ?? ??? ??? ??? ??? ??? ?linePassOne(); ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?if (k == 2) { ?? ??? ??? ??? ??? ?if (x0 == x) { ?? ??? ??? ??? ??? ??? ?remove(); ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?if (x0 < x) { ?? ??? ??? ??? ??? ??? ?for (n = x0; n <= x - 1; n++) { ?? ??? ??? ??? ??? ??? ??? ?if (grid[n][j] != 0) { ?? ??? ??? ??? ??? ??? ??? ??? ?k = 0; ?? ??? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ??? ?if (grid[n][j] == 0 && n == x - 1) { ?? ??? ??? ??? ??? ??? ??? ??? ?remove(); ?? ??? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?if (x0 > x) { ?? ??? ??? ??? ??? ??? ?for (n = x0; n >= x + 1; n--) { ?? ??? ??? ??? ??? ??? ??? ?if (grid[n][j] != 0) { ?? ??? ??? ??? ??? ??? ??? ??? ?k = 0; ?? ??? ??? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ??? ?if (grid[n][j] == 0 && n == x + 1) { ?? ??? ??? ??? ??? ??? ??? ??? ?remove(); ?? ??? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ??? ?for (i = 0; i < 8; i++) { // 列 ?? ??? ??? ??? ?if (grid[i][y0] == 0) { ?? ??? ??? ??? ??? ?if (x > i) { ?? ??? ??? ??? ??? ??? ?for (j = x - 1; j >= i; j--) { ?? ??? ??? ??? ??? ??? ??? ?if (grid[j][y] != 0) { ?? ??? ??? ??? ??? ??? ??? ??? ?k = 0; ?? ??? ??? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ??? ??? ??? ?k = 1; ?? ??? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?if (k == 1) { ?? ??? ??? ??? ??? ??? ??? ?rowPassOne(); ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?if (x < i) { ?? ??? ??? ??? ??? ??? ?for (j = x + 1; j <= i; j++) { ?? ??? ??? ??? ??? ??? ??? ?if (grid[j][y] != 0) { ?? ??? ??? ??? ??? ??? ??? ??? ?k = 0; ?? ??? ??? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ??? ??? ??? ?k = 1; ?? ??? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?if (k == 1) { ?? ??? ??? ??? ??? ??? ??? ?rowPassOne(); ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?if (x == i) { ?? ??? ??? ??? ??? ??? ?rowPassOne(); ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ??? ?if (k == 2) { ?? ??? ??? ??? ??? ?if (y0 == y) { ?? ??? ??? ??? ??? ??? ?remove(); ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?if (y0 < y) { ?? ??? ??? ??? ??? ??? ?for (n = y0; n <= y - 1; n++) { ?? ??? ??? ??? ??? ??? ??? ?if (grid[i][n] != 0) { ?? ??? ??? ??? ??? ??? ??? ??? ?k = 0; ?? ??? ??? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ??? ?if (grid[i][n] == 0 && n == y - 1) { ?? ??? ??? ??? ??? ??? ??? ??? ?remove(); ?? ??? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?if (y0 > y) { ?? ??? ??? ??? ??? ??? ?for (n = y0; n >= y + 1; n--) { ?? ??? ??? ??? ??? ??? ??? ?if (grid[i][n] != 0) { ?? ??? ??? ??? ??? ??? ??? ??? ?k = 0; ?? ??? ??? ??? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ??? ?if (grid[i][n] == 0 && n == y + 1) { ?? ??? ??? ??? ??? ??? ??? ??? ?remove(); ?? ??? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ??? ?} ?? ??? ??? ??? ??? ?} ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?public void linePassOne() { ?? ??? ?if (y0 > j) { // 第一按鈕同行空按鈕在左邊 ?? ??? ??? ?for (i = y0 - 1; i >= j; i--) { // 判斷第一按鈕同左側(cè)空按鈕之間有沒按鈕?? ? ?? ??? ??? ??? ?if (grid[x0][i] != 0) { ?? ??? ??? ??? ??? ?k = 0; ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ?k= 2; ?? ??? ??? ??? ?} // K=2說明通過了第二次驗證 ?? ??? ??? ?} ?? ??? ?} ?? ??? ?if (y0 < j) { // 第一按鈕同行空按鈕在與第二按鈕之間 ?? ??? ??? ?for (i = y0 + 1; i <= j; i++) { ?? ??? ??? ??? ?if (grid[x0][i] != 0) { ?? ??? ??? ??? ??? ?k = 0; ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ?k = 2; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?public void rowPassOne() { ?? ??? ?if (x0 > i) { ?? ??? ??? ?for (j = x0 - 1; j >= i; j--) { ?? ??? ??? ??? ?if (grid[j][y0] != 0) { ?? ??? ??? ??? ??? ?k = 0; ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ?k = 2; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?} ?? ??? ?if (x0 < i) { ?? ??? ??? ?for (j = x0 + 1; j <= i; j++) { ?? ??? ??? ??? ?if (grid[j][y0] != 0) { ?? ??? ??? ??? ??? ?k = 0; ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} else { ?? ??? ??? ??? ??? ?k = 2; ?? ??? ??? ??? ?} ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?//消去按鈕算法 ?? ?public void remove() { ?? ??? ?firstButton.setVisible(false); ?? ??? ?secondButton.setVisible(false); ? //兩個按鈕不可見 ?? ??? ?fraction(); ? ? ? ?//改變分?jǐn)?shù) ?? ??? ?pressInformation = false; ? ? ? ? //點擊按鈕鍵清掉 ?? ??? ?k = 0; ? ? ? ? ? ? ? ? ? ? ? ? ? ?//可消除標(biāo)志清空 ?? ??? ?grid[x0][y0] = 0; ?? ??? ?grid[x][y] = 0; ? ? ? ? ? ? ? ? ? //按鈕鍵值清零 ?? ?} ?? ?//事件響應(yīng) ?? ?public void actionPerformed(ActionEvent e) { ?? ??? ?if (e.getSource() == newlyButton) { ?? ??? ??? ?int grid[][] = new int[8][7]; ?? ??? ??? ?this.grid = grid; ?? ??? ??? ?randomBuild(); ?? ??? ??? ?score=0; ?? ??? ??? ?mainFrame.setVisible(false); ?? ??? ??? ?pressInformation = false; ?? ??? ??? ?init(); ?? ??? ?} ?? ??? ?if (e.getSource() == exitButton) ?? ??? ??? ?System.exit(0); ?? ??? ?if (e.getSource() == resetButton) ?? ??? ??? ?reload(); ?? ??? ?for (int cols = 0; cols < 6; cols++) { ?? ??? ??? ?for (int rows = 0; rows < 5; rows++) { ?? ??? ??? ??? ?if (e.getSource() == diamondsButton[cols][rows]) ?? ??? ??? ??? ??? ?estimateEven(cols + 1, rows + 1, diamondsButton[cols][rows]); ?? ??? ??? ?} ?? ??? ?} ?? ?} ?? ?public static void main(String[] args) { ?? ??? ?LianLianKan llk = new LianLianKan(); ?? ??? ?llk.randomBuild();//隨機分配鍵值 ?? ??? ?llk.init();//初始化 ?? ?} }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用SpringBoot的CommandLineRunner遇到的坑及解決
這篇文章主要介紹了使用SpringBoot的CommandLineRunner遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02基于UncategorizedSQLException異常處理方案
這篇文章主要介紹了基于UncategorizedSQLException異常處理方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12Java overload和override的區(qū)別分析
方法的重寫(Overriding)和重載(Overloading)是Java多態(tài)性的不同表現(xiàn),想要了解更多請參考本文2012-11-11