for循环效率

时间:2019-01-09 23:51:25

标签: java

如何优化以下代码段?我正在创建要填充到2D数组中的空间对象以充当国际象棋棋盘,并使用它来创建更标准的命名系统。

String name = null;
    for(int r = 7; r > -1; r--)
        for(int c = 0; c < 8; c++)
        {
            if(c == 0)
                name = "A";
            else if(c == 1)
                name = "B";
            else if(c == 2)
                name = "C";
            else if(c == 3)
                name = "D";
            else if(c == 4)
                name = "E";
            else if(c == 5)
                name = "F";
            else if(c == 6)
                name = "G";
            else
                name = "H";

4 个答案:

答案 0 :(得分:3)

final static char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' };
      :
for (int c=0; c<8; c++) {
    name = letters[c];
      :

此名称为char-确实需要为字符串吗?如果是这样,请进行明显的更改。如果您担心效率,则将字母定义为String [],而不是将运行时从char转换为String。

答案 1 :(得分:2)

您可以遍历字符并将其更改为这样的字符串:

for (int r=7; r >= 0; r--) {
    for (char c='A'; c <= 'H'; c++) {
        name = c + "";

答案 2 :(得分:1)

您从未完成过for循环,但这是一种优化到目前为止为止向我们展示的内容的方法:

String name = null;
String letters = "ABCDEFGH";

for (int r=7; r >= 0; r--) {
    for (int c=0; c < 8; c++) {
        name = letters.charAt(c) + "";

        // the rest of your logic
    }
}

答案 3 :(得分:0)

“ A”的ASCII码为65,“ H”的ASCII码为72。然后,您可以执行以下操作

for (int r = 7; r > -1; r--) {
    for(int c = 65; c < 73; c++) {
        name = Character.toString((char) c);
        //or
        name = "" + (char) c;
    }
}