Java 杂谈

二维数组钟摆式输出

2017-03-16  本文已影响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

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

上一篇 下一篇

猜你喜欢

热点阅读