美文网首页Java 杂谈
二维数组钟摆式输出

二维数组钟摆式输出

作者: 蜗先生 | 来源:发表于2017-03-16 15:02 被阅读34次

    无整理 不简书

    例题:二维数组第一行是小写字母,第二行是大写字母,钟摆式输出(AaCcEe...WwYyZzXxVv....DdBb)
    本题只要做两件事,第一件事是存储,第二件事是输出,把存储和输出放到同一循环中,输出的字母一定要在数组中存在,在这里我把存储和输出同步:一共26个字母也就是循环26次,每次循环存储并输出一个相同字母,数组是按照正常的AaBbCcDd顺序存储并且存储和输出的顺序符合钟摆式。

    //二维数组第一行是小写字母,第二行是大写字母,摆钟式输出
        char[][] n = new char[2][26];
        for(int i = 0; i < 26; i++)
        {
            if(i < 13)
            {//0 a  2 c  4   e   12 y
                n[0][2 * i] = (char)(2 * i + 65);
                n[1][2 * i] = (char)(2 * i + 97);
                System.out.print(n[0][2 * i]);
                System.out.print(n[1][2 * i]);
            }
            else
            {//25 z 23 x  ...                   //13 -  25   14  -  23  15 - 21
                n[0][51 - 2 * i] = (char)(51 - 2 * i + 65);
                n[1][51 - 2 * i] = (char)(51 - 2 * i + 97);
                System.out.print(n[0][51 - 2 * i]);
                System.out.print(n[1][51 - 2 * i]);
            }
        }
    

    前13个存储字母顺序(二维数组的下标)
    0,2,4,6,...,24 (2 i)
    前13个输出字母顺序(钟摆的前13项)
    Aa,Cc,Ee,...,Yy(2 i + 65 /2 i + 97)
    0 - Aa,2 - Cc,4 - Ee,...,12 - Yy

    后13个存储字母顺序(二维数组的下标)
    25,23,21,19,...,1 (51 - 2 i)
    后13个输出字母顺序(钟摆的后13项)
    Zz,Xx,Vv,...,Bb (51 - 2 i + 65/51 - 2 i + 97)
    25 - Zz,23 - Xx,21 - Vv,...,1 - Bb

    关于2 i 和51 - 2 i是如何计算出来的,参考如下:
    0 2 4 6 ...很容易看出是偶数 用 i (0,1,2,3...)的通式表示就是2 i
    25 23 21 19...与 i (13,14,15,16...) 的对应关系,很容易看出 i 每增加 1 下标下降 2 ,所以 i 与下标成线性关系,斜率是 -2 ,带入数值计算出 下标 = 51 - 2 i

    如有错误之处,请指正。如有更好的方法,欢迎讨论。

    相关文章

      网友评论

        本文标题:二维数组钟摆式输出

        本文链接:https://www.haomeiwen.com/subject/afntnttx.html