在转到下一个语句之前,如何完全运行if语句?

时间:2018-11-10 19:55:38

标签: java

这个问题很难用简洁的措辞表达。我将如何修改我的代码以满足我在此问题中遇到的限制?

public static void main(String[] args) {
    final int [][] test = { {1, 6, 11, 16, 21}, 
                            {2, 7, 12, 17, 22}, 
                            {3, 8, 13, 18, 23}, 
                            {4, 9, 14, 19, 24}, 
                            {5, 10, 15, 20, 25} };
    System.out.println(TwoDOneD.XShape(test));

public static String XShape(int [][] test) {
    String res = "";
    for (int c = 0; c < test[0].length; c++) {
         for (int r = 0; r < test.length; r++) {
            if (c == r) {
                res += test[r][c] + " ";
            } else if (c + r == 4) {
                res += test[r][c] + " ";
            }
        }
    }
    return res;
}

此代码的要点是将构成X模式的整数放入字符串中并打印该字符串。这是我每次运行时都会得到的输出:

1 5 7 9 13 17 19 21 25 

但是我希望输出看起来像这样(首先使用第一个if语句,将所有这些值添加到字符串中,然后移到另一个else if语句并将所有这些值添加到字符串中):

1 7 13 19 25 21 17 13 9 5

3 个答案:

答案 0 :(得分:2)

如果使用2个结果,则不需要多余的循环,然后在最后加入它们:

String res1, res2 = "";
for (int c = 0; c < test[0].length; c++) {
     for (int r = 0; r < test.length; r++) {
        if (c == r) {
            res1 += test[r][c] + " ";
        } else if (c + r == 4) {
            res2 += test[r][c] + " ";
        }
    }
}
return res1 + res2;

答案 1 :(得分:1)

您需要两个循环。

其中一个c = r和另一个c = 4 - r

您不需要使用嵌套循环,每个循环只需一个。您也不需要if语句。

答案 2 :(得分:1)

您有两个嵌套的for循环。它们将按列主要顺序运行和迭代。如果要以不同的顺序进行迭代,则需要使用不同的循环。 if语句没有任何问题。

for (int c = 0; c < test.length; c++) {
  // Do it for (c, c)
}
for (int c = 0; c < test.length; c++) {
  // Do it for (c, test.length - c - 1)
}

此外,作为切线笔记,您在一个地方使用4作为幻数,在其他地方使用test.length。如果您始终希望数组为5x5,则使用5而不是test.length并在开始处放一个断言。否则(更有可能),使用test.length - 1代替幻数4