⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 j_gridboard15.java

📁 一个十分好的java基础学习的课件
💻 JAVA
字号:
// ////////////////////////////////////////////////////////
// 
// J_Grid15.java

// ////////////////////////////////////////////////////////


class J_GridBoard15
{
    int [] [] m_board;

    J_GridBoard15( )
    {
        m_board= new int[3][3];
    } // End of method: J_GridBoard15

    // 输出棋盘的格线行
    private void mb_outputGridRowBoard( )
    {
        int i;
        System.out.print("+");
        for (i= 0; i< 5; i++)
            System.out.print("-");
        System.out.println("+");
    } // End of method: mb_outputGridRowBoard

    // 输出棋盘的数据行 (第i行, i只能为0, 1 或 2)
    private void mb_outputGridRowBoard(int i)
    {
        int j;
        for (j= 0; j< m_board[i].length; j++)
            System.out.print("|" + m_board[i][j]);
        System.out.println("|");
    } // End of method: mb_outputGridRowBoard

    // 输出棋盘
    public void mb_outputGrid( )
    {
        int i;
        mb_outputGridRowBoard( );
        for (i= 0; i< m_board.length; i++)
        {
            mb_outputGridRowBoard(i);
            mb_outputGridRowBoard( );
        }
    } // End of method: mb_outputGrid

    // 初始化数据
    private void mb_dataInit( )
    {
        int i, j, k;
        for (i= 0, k= 1; i< m_board.length; i++)
        for (j= 0; j< m_board[i].length; j++, k++)
            m_board[i][j]= k;
    } // End of method: mb_dataInit
    
    // 数据结束检测
    // 返回值说明: 当数据为最后一个数据时,返回 true;否则返回 false
    private boolean mb_dataEnd( )
    {
        int i, j, k;
        for (i= 0, k= 9; i< m_board.length; i++)
            for (j= 0; j< m_board[i].length; j++, k--)
                if (m_board[i][j]!= k)
                    return(false);
        return(true);
    } // End of method: mb_dataEnd

    // 取下一个数据
    private void mb_dataNext( )
    {
        int i, j;
        for (i= m_board.length-1; i>=0 ; i--)
            for (j= m_board[i].length-1; j>=0 ; j--)
                if (m_board[i][j]==9)
                    m_board[i][j]=1;
                else
                {
                    m_board[i][j]++;
                    return;
                }
    } // End of method: mb_dataNext

    // 数据检测: 判断数据中是否含有相同的数字
    // 当数据中存在相同数字时,返回 false; 否则返回 true.
    private boolean mb_dataCheckDifferent( )
    {
        int i, j;
        int [] digit= new int [10];
        for (i= 0; i< m_board.length; i++)
            for (j= 0; j< m_board[i].length; j++)
                digit[m_board[i][j]]= 1;
        for (i=1, j= 0; i< digit.length; i++)
            j+=digit[i];
        if (j==9)
            return(true);
        return(false);
    } // End of method: mb_dataCheckDifferent

    // 数据检测: 各行和是否为 15
    // 当各行和均为 15 时,返回 true; 否则返回 false.
    private boolean mb_dataCheckSumRow( )
    {
        int i, j, k;
        for (i= 0; i< m_board.length; i++)
        {
            for (j= 0, k= 0; j< m_board[i].length; j++)
                k+= m_board[i][j];
            if (k!=15)
                return(false);
        }
        return(true);
    } // End of method: mb_dataCheckSumRow

    // 数据检测: 各列和是否为 15
    // 当各列和均为 15 时,返回 true; 否则返回 false.
    private boolean mb_dataCheckSumColumn( )
    {
        int i, j, k;
        for (i= 0; i< m_board.length; i++)
        {
            for (j= 0, k= 0; j< m_board.length; j++)
                k+= m_board[j][i];
            if (k!=15)
                return(false);
        }
        return(true);
    } // End of method: mb_dataCheckSumColumn

    private boolean mb_dataCheck( )
    {
        if (!mb_dataCheckDifferent( ))
            return(false);
        if (!mb_dataCheckSumRow( ))
            return(false);
        if (!mb_dataCheckSumColumn( ))
            return(false);
        if (m_board[0][0]+m_board[1][1]+m_board[2][2]!=15) // 检测对角线之和是否为 15
            return(false);
        if (m_board[0][2]+m_board[1][1]+m_board[2][0]!=15) // 检测对角线之和是否为 15
            return(false);
        return(true);
    } // End of method: mb_dataCheck

    // 求解并输出棋盘问题
    public void mb_arrange( )
    {
        int n= 1;
        for (mb_dataInit( ); !mb_dataEnd( ); mb_dataNext( ))
        {
            if (mb_dataCheck( ))
            {
                System.out.println("Result [" + n + "]:");
                n++;
                mb_outputGrid( );
            }
        }
    } // End of method: mb_arrange

} // End of class: J_Grid15

private class J_Grid15
{

    public static void main(String args[])
    {
        J_GridBoard15 a= new J_GridBoard15( );
        a.mb_arrange( );
    } // End of method: main

} // End of class: J_Grid15

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -